Macromedia Flash非公式テクニカルノート gotoAndPlay/gotoAndStopでシーンの移動ができない
Platform: All 'gotoAndPlay'あるいは'gotoAndStop'は、指定したフレームに移動して再生を続ける('gotoAndPlay')か、そこで再生を停止します('gotoAndStop')。 1. 独立のアクションとMovieClipのメソッド 2つの命令の大きな違いは、独立のアクションが「シーン」を指定できることです。つまり、このアクションは、つぎのように記述します。
gotoAndPlay(シーン, フレーム); ところで、MovieClip内には、「シーン」が作成できません。「シーン」は、メインのタイムラインにしか存在しないのです。ですから、「シーン」を指定するこのアクションは、メインのタイムライン、つまり'_root'でしか使用できません。 これに対して、MovieClipのメソッドは、ターゲットパスを指定したうえで、以下のようにフレームのみを引数に取ります。
myMovieClip.gotoAndPlay(フレーム); 問題は、MovieClipの中でも、シーンの指定が一応できてしまうことです。もちろん、'_root'で使用しなければ、シーンの指定は無意味です。ただ、まったく動作しない訳ではありません。アクションは、スクリプトの記述されたMovieClipを対象として認識します。そして、「シーン」の指定は無視します。つまり、メインのタイムライン('_root')ではなく、スクリプトを記述したMovieClipに対してフレームの移動が実行されることになります。 2. シーンは1本のタイムラインに また、独立のアクション'gotoAndPlay'または'gotoAndStop'でシーンとフレームを指定した場合、SWFファイルには1本につなげたタイムラインの中のフレーム番号に変換されて書出されます。つまり、シーン名自体はSWFファイルには保持されないのです。そのため、アクションの中で「シーン」を「変数」にして、移動するシーンをダイナミックに変更することはできません。たとえば、以下のスクリプトは、エラーになります。
sScene = "シーン 1"; シーンは変数でなく、必ずストリングつまりダブルクォーテーション(")で囲ったかたちで指定しなければならないのです。 3. フレームラベルを使いましょう MovieClipのメソッドでは、「シーン」が指定できないという難点はあります。しかし、これもフレームラベルを活用することにより、対応は可能です。gotoAndPlay("シーン 1", 5)とする替わりに、フレームラベルをつけてthis.gotoAndPlay("Scene1_Start")とすればよいからです。MovieClipのメソッドですから、ターゲットパスに'_root'を指定すれば、MovieClipからメインのタイムラインのフレーム移動を行うこともできます。 Macromediaテクニカルノートの「シーンへ移動できないのは何故か」は、あまりに簡潔すぎて、何を説明しているのかわかりません。おそらく、本稿と同じことを意味しているものと思われます。 _____ 作成者: 野中文雄 Copyright © 2001-2006 Fumio Nonaka. All rights reserved. |
|||