Home > blog > SWF のフレーム制御について

SWF のフレーム制御について

  • 2008-01-13 (日) 7:41
  • blog
  • hatena button
  • hatena count
  • save this page del.icio.us

どうも JC です。

ちょっと色々と勉強していて 躓いたので、メモしときます。

Flash CS3 等で作成した SWF ファイルのフレーム制御についてです。

gotoAndPlay や gotoAndStop は最後に実行される。

コレは周知の問題ですが、コレが意外と厄介で。
たとえば、4フレーム目などに MC を配置して、 gotoAndStop() で4フレーム目に飛ばし、
その MC を取得しようとする。
すると、 gotoAndStop() は最後に実行されるので、制御している側が、
swf.gotoAndStop(4);
swf.getChildByName(”hoge_mc”);
とやっても取得はできません。
じゃあ EnterFrame イベントを取るか。

ということで EnterFrame イベントでフレームが変わったら取得しようとしても、取得できる場合もあるが、取得できない場合もある。
さらに、EnterFrame イベントは遅い。

結局のところ最初からMC をすべて配置しておくか、EnterFrame で 指定した Frame にきたことを確かめてから取得するしかないようだ。

Scene について

この Scene も結構厄介。

Scene を取得するには MovieClip のプロパティに scenes があるので それで Scene の配列を取得できる。
現在のフレームの Scene は MovieClip のプロパティの currentScene で取得できる。
では、この scenes の中にある Scene は currentScene と一致するのか。

実は別のもの。

scenes の中身全部と currentScene を == で比較してみたら、一致するものは無かった。
結局コレの解決法は scene の name を比較するしかない。

もう一つ Scene について

Scene は Flash CS3オーサリング環境でしか作ることができない。
それはまぁいいが、パブリッシュする際に Scene が統合される場合がある。
その条件としては以下の二つ。

  1. ActionScript がまったく記述されていない。
  2. MovieClip に インスタンス名が記述されていない。

まぁどちらも同じ意味だ。
つまり、ActionScript を使用する見込みが無いものは、 Scene を必要としないと判断され、
パブリッシュ時に 統合されてしまう。

Frame に配置してある オブジェクトについて

フレームを 4フレーム使い、それぞれのフレームに TextField を配置したとしよう。
その状態で play をし、配置してある TextField を取得。
その参照を配列に持っておくことにする。
その後、その配列内の TextField に対して、text を設定しても表示されなかった。
null になっているわけではない。
フレームが変わる毎に新しい TextField を作成しているのだろうか?

以上。
Flash は謎が多い。。。
便利だけどさ。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.bk-zen.com/2008/01/13/48/trackback/
Listed below are links to weblogs that reference
SWF のフレーム制御について from 馬鹿全

Home > blog > SWF のフレーム制御について

Search
Feeds
Meta

Return to page top