2005/11/17(木) [n年前の日記]
#10 [flash] _Macromedia Flash - XMLでJPEGスライドを作成する
コレを見ながら試してたのだけど、もしかしてこれって ActionScript 2.0 用だろうか。Flash Creator って、ActionScript 1.0 までしか対応してないわけで…。
いや。Flash Creator でも可能だった。ヘルプにも書いてあったわ。
なんか忘れそうなのでメモ。
(2005/11/19追記:下のはやっぱりおかしかった。 _書き直し。 )
最初のほうのフレーム。
xml を読ませるフレーム -1。
xml を読ませるフレーム + 0。
xml を読ませるフレーム +1;
後のほうのフレーム。
xml はこんな感じで。
_Macromedia - Flash TechNote : fl0262 - Macromedia Flash Player 6 以降でのエンコーディングについて
いや。Flash Creator でも可能だった。ヘルプにも書いてあったわ。
なんか忘れそうなのでメモ。
(2005/11/19追記:下のはやっぱりおかしかった。 _書き直し。 )
最初のほうのフレーム。
// 表示確認用変数
img_name = "name";
img_path = "image path";
img_nvalue = "node value";
enemy_length = 0;
xml_length = 0;
counter = 0;
// image に付随する情報。xml で渡される。
var enemy_name = new Array();
var enemy_imgpathA = new Array();
var enemy_nodeValue = new Array();
// 以下は後で呼ばれる
// 敵情報の格納をする関数
function setEnemyData(n) {
enemy_name.push(n.attributes.name);
enemy_imgpathA.push(n.attributes.jpegURL);
enemy_nodeValue.push(n.firstChild.nodeValue);
}
// ムービークリップにJPEG画像を読むための関数
function updateImg(n) {
img_name = enemy_name[n];
img_path = enemy_imgpathA[n];
img_nvalue = enemy_nodeValue[n];
loadMovie(img_path, this.targetClip);
}
xml を読ませるフレーム -1。
flag = 0;
xml を読ませるフレーム + 0。
// xml がロードできたときに呼ばれる関数
function myXmlOnLoad(success) {
if ( success ) {
//エラーが出ることなくXMLドキュメントがロードされた。処理を継続。
rn = myxml.firstChild;
xml_length = rn.childNodes.length;
node = rn.firstChild;
// xml の内容を、データ用配列に格納
do {
setEnemyData(node); // 格納
nextnode = node.nextSibling; // 次のノードを求める
node = nextnode;
} while ( node != null );
enemy_length = enemy_name.length;
flag = 1;
} else {
//XMLドキュメントがロードされなかった。処理を停止。
flag = -1;
}
}
// xml 読み込み
myxml = new XML();
myxml.onLoad = myXmlOnLoad;
myxml.ignoreWhite = true;
myxml.load("temp_utf8.xml");
if ( flag == 0 ) {
} else {
if ( flag == 1 ) {
this.gotoAndPlay("loadsuccess");
} else {
this.gotoAndPlay("loaderror");
}
}
xml を読ませるフレーム +1;
this.gotoAndPlay( _currentframe - 1 );xml を読ませるフレームを1回だけ経由したのではそれらしい結果が帰ってこなくて、何度もループするように書いてしまったのだけど、いいのかしら…。たぶん何かを間違えてる…。>自分。
後のほうのフレーム。
counter++;
if ( (counter % (24*1)) == 0 ) {
// 画像更新
updateImg(loadimgnum);
loadimgnum++;
if ( loadimgnum >= enemy_length ) {
loadimgnum = 0;
}
}
xml はこんな感じで。
<Cards> <cardNode name="ぬらりひょん" jpegURL="image/000a.jpg">node value A</cardNode> <cardNode name="蝙蝠男たけし" jpegURL="image/010a.jpg">node value B</cardNode> <cardNode name="ライダー1号" jpegURL="image/020a.jpg">node value C</cardNode> <cardNode name="ライダー2号" jpegURL="image/030a.jpg">node value D</cardNode> <cardNode name="ライダーV3" jpegURL="image/040a.jpg">node value E</cardNode> <cardNode name="ライダーマン" jpegURL="image/050a.jpg">node value F</cardNode> <cardNode name="ぬりかべさん" jpegURL="image/060a.jpg">node value G</cardNode> <cardNode name="ねずみ男さん" jpegURL="image/070a.jpg">node value H</cardNode> <cardNode name="亀太郎ちゃん" jpegURL="image/080a.jpg">node value I</cardNode> <cardNode name="雷鼠クローン" jpegURL="image/090a.jpg">node value J</cardNode> </Cards>xml の中に日本語を使う場合は、UTF-8 で保存しておかないといかんみたい。途中で読み込みが終わるわ、表示すると日本語部分が文字化けするわで悩んでしまった。…それとも、WinXP でやってるからそうなるわけで、Win9x のような SJIS で2バイト文字を管理してるような OS なら結果は違ってくるのだろうか。
_Macromedia - Flash TechNote : fl0262 - Macromedia Flash Player 6 以降でのエンコーディングについて
Flash Player バージョン 6 以降で作成された Flash ムービー (swf) 上に、loadVariables などを使って外部テキストを読み込んだ場合、日本語文字が化けてしまうことがあります。これは、Flash ムービーのバージョン 6 以降でのエンコーディングの扱いにおいて、マルチ言語に対応するための仕様が追加されているためで、デベロッパの方は、コンテンツを作成する際に以下のいずれかの作業を行っておく必要があります。これか。
1. コンテンツ 1 フレーム目のフレームスクリプト最上部に、「System.useCodepage = true;」という一行を付け加える。
2. 読み込むテキストのエンコーディングを UTF-8 として作成する。Macromedia - Flash TechNote : fl0262 - Macromedia Flash Player 6 以降でのエンコーディングについて より
◎ メモしづらいActionScript :
ActionScript ってソーススクリプト部分をずらずらと書けないのが厳しい。フレームとかムービークリップとかスクリプトがくっついてるからなぁ…。ただ、.as なるファイルで管理することもできる云々をあちこちで見かけるわけで。ActionScript 2.0 からはそういう管理ができるのかしら。それとも、本家 FLASH MX 等の特典機能なのだろうか。そのへん、まだ、よくわかってなかったり。
◎ _ActionScriptどこに書く? - MXスタイルからAS2.0まで :
◎ MovieClipLoader でハマる :
_Macromedia の解説ページ
や、
_Flash講座 - WEBチュートリアル - ActionScript 2.0の基礎とGraphの概念
というページを見ながら打ってみたのだけど。ウンともスンとも動く気配が無い。Flash Creator のヘルプには該当項目があるから、有効だろうと想像するのだけど。うーん。
◎ _Eclipse - Building Flash Applications :
ASDT(ActionScript Development Tool) のチュートリアル映像。たぶん。…これで動作確認して動いてしまったら、Flash Creator 側に何かあるのかもしれない。
Eclipse + ASDT 上で、試しに打ち込んでみた。動かない。ということは、Flash Creator 上のソレも、記述の仕方が悪いだけなのだろうか。
Eclipse + ASDT 上で、試しに打ち込んでみた。動かない。ということは、Flash Creator 上のソレも、記述の仕方が悪いだけなのだろうか。
[ ツッコむ ]
以上です。