Flashを使う

今まで避けて通ってきた 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 を利用しています。

Similar Posts: