はまったはまった、またはまった。orz

イヤー、ハマったハマった。
はまったけど何とかなりました。よかったよかった。


え、いや、Javascriptの話とちゃいますよ。
また別のものにハマってましたorz
FlashActionScriptです。
スライドショー的なFlashを組んでたんです。
割と単純な仕様で、XMLにリストされた画像ファイル名を読み出して、
クロスフェードさせながらスライドショーさせるだけ、です。


しかし、このクロスフェードっつーところでおおはまり。


フェードの仕組み自体は単純、
・MovieClipを2つ用意(表と裏)して
・裏には現在表に表示されているのと同じ画像を読み込み、
・表は透過率を100にして、次の画像を読み込み、
・setIntervalでループさせて表の透過率をゆっくり下げていく
これの繰り返しです。


この仕組み自体はすぐできたのですが、どうやっても裏に画像を読み込むときに、
一瞬フラッシュの背景が表示される!
一瞬といっても確実に知覚できるレベルです。
このままお客さんに出したら間違いなく「なんやー?」と言われる(;;


で、いろいろウェブやヘルプや逆引き大全を調べまわって、
トライアンドエラーを繰り返し、なんとか解決できました。


「表」は大丈夫みたい。こっちだけだと問題ない。
問題は「裏」の画像読み込み。
どうやら、loadMovie()やMovieClipLoader.loadClip()ではだめっぽい。
どんだけこねくりまわしても改善しない。
ということは、loadMovieのようにMovieClipに直接読み込む方法じゃなくて、
別の方法を考えたほうがよさそう。


で、ぐぐるさんのお導きに乗っかって調べて回っていたら、
ものすごく実用的なサイトを発見しました!
http://hakuhin.hp.infoseek.co.jp/


Flashを日常的に利用されている人には有名なサイトなのでしょうか。
ActionScriptを利用したFlashについて、実用的な解説とサンプルがたくさんあります。
このサイトの「ムービークリップの絵をイメージに焼き付ける」を参考にして、
「表」に乗っかっている画像をBitmapData.Draw(MovieClip)で取得。
ソレをMovieClip.attachBitmapで関連付けて完了!
一瞬の背景表示もなくなり、ちゃんと想定どおりに動いているみたいです!


ぁーいやぁ、つかれた。肩こった。
だいたいFlashに関する知識がほとんど無いなかであっさり引き受けるのが悪いって話だよね・・・
上で書いたようなやり方が正解なのかと言われると、たぶん違うと思います。
おそらく loadMovie()でもうまく動くやり方があるのでは・・・。
そこまではちょっと調査が至りませんでした。


まぁFlash面白いから、個人的にボツボツやってみますかね・・・
とりあえず、フリーのActionScriptコンパイラから・・・(貧乏性)