今まで避けて通ってきた Macromedia Flash を仕事で使ってみることになり、ここ数日大変。
Flash全般のリファレンス本と、Actionスクリプトのリファレンス、それにスクリプトサンプル集の3冊を購入し、格闘中です。月曜から始めたのですが、なかなか思ったように作成できません。
要件で外部ファイル(Jpeg)を読む必要があるのですが、やはり MovieClip.loadMovie() 直後にサイズ変更しようとしてハマりました。
例えば
mc.loadMovie("img.jpg"); mc._width = 100; mc._height = 100;
などとしても、オリジナル画像サイズになってしまう。で、トレースしてみるとどうやらloadMovie()では非同期にロード処理が行われるようで、メソッド呼び出し直後だと無意味なのではないかと憶測。リファレンスを調べてみると
ムービークリップがMovieClip.loadVariables()またはMovieClip.loadMovie()の呼び出しからデータを受け取ったときに呼び出されます
という onData ハンドラがあったので
mc.onData = function() { mc._width = 100; mc._height = 100; }
としてみました。でも、ハンドラは一向に呼ばれない。これで大分時間を費やしてしまいました。
ネットを色々調べてみると、loadMovie完了で一部のプロパティーやユーザー定義のハンドラは、クリアされてしまうようなのですね。
【参考】F-site : 意外と使えないMovieClip.onData
上の記事を参考にして、onClipEvent(data) をハンドリングしてやることでうまく行きました。
他にも色々と癖があって悩ましいですね。ちなみにオーサリングツールとしては Flash MX を利用しています。
2 Comments