ActionScript2でシーンをスクリプトで移動して再生したいときにはgotoAndPlayを使うらしい。
でも実際はここやここに書いてあるやり方ではエラーがでてだめ。
ここにはフレームの番号かフレームラベルを引数にすると書いてあるけど、型がobjectになってるので数値や文字列を渡すとエラーで動かない。
↓のように移動先のフレーム番号(シーン1のフレーム数とシーン2の目的のフレーム番号までを足したもの)を渡したけどだめだった。
gotoAndPlay(522);
この場合のオブジェクトは何で、どうやって取得するのかわからないので↓を書いてみたけどまったく動かず。
var myObj:Object = new Object(); myObj = 522; gotoAndPlay(myObj);
そりゃそうだ。値の型が違うわ。
調べたけどやり方がわからない。前任者が書いた似たような処理のコードはなぜかこうなってた。
var goto:int = 2; setTimeout(gotoAndPlay, 7500, goto);
7500ミリ秒あとにgotoAndPlayに引数gotoを渡してる。けど、なぜこんなことになるんだろう。
日本語の情報がなくて説明がわかりやすかったのがこちら。
たぶんこれかなと思う。
swfをコンパイルしたりロードしたりするときに全てのフレームは読み込まれるけど、
再生時にはフレームがスタックになってるわけではないので、全てのフレームが読み込まれるのを待ってからgotoAndPlayを実行しなきゃだめということ。
移動先のフレームが再生できるまで待つってことね。
なるほど!だからsetTimeoutを使うわけか。
これまたASの人には常識っぽいなー。