gotoAndPlay()で飛ばされるフレームもバッチリ見られている
マスクを動かすとLoader内の画像が消える!?でも登場しました、タイムラインに配置したオブジェクトが別物扱いになる問題。
同一のモノとして一貫させるには
- すべて同じオブジェクト名をつけ、全てのフレームに配置する。
- モーショントゥイーンをつける場合は同期させる。
- マスクをかける場合はマスクもオブジェクト化して全てのフレームに配置すると安心。
このあたりに気をつけていれば大丈夫です。
さて、気をつけていたのにまたしても罠にハマった安藤です。こんにちは。
今回の原因はgotoAndPlay()の遷移にありました。

↑が今回のハマりポイントを簡単に再現したものです。
配置されているMC内では、EnterFrameするごとに数字をカウントアップして表示するようにしています。
rootでは6フレーム目のスクリプトで
gotoAndPlay(8);
しています。8フレーム目以降にも同じオブジェクト名をつけたMCが配置されているので、遷移後もMCのカウントは5、6、7、8、・・・と続いて行くといいなぁ・・・しかし。
flashtest.swf(わかりやすくするため1fpsに設定しています)
このように、途中で別物MCと見なされるのでカウントが戻ってしまいます。もちろんそれはgotoAndPlayの時に起こっているのですが、「なんでやねん!7フレーム目には確かにMC置いてないけど、そこは飛ばしてるやん!」って思いますよね。
これがgotoAnd系のヘンなところで、どうやらあるフレームからあるフレームへgotoする時、その間のフレームも処理に影響するらしいのです。6から8フレームへジャンプしてる最中に「あ、7フレーム目でMC切れてるね。じゃあ8フレームにあるMCは別物だね」という判断をされているわけです。
要はgotoAnd系でアニメーションを管理する場合でも、全てのフレームに(絶対に遷移しないフレームにも)ちゃんとMCを配置しておけば大丈夫。ってことですね。
この仕様を利用してなにかうまいことできないですかね。( ´ー`)