Macromedia Flash非公式テクニカルノート

gotoAndPlay/gotoAndStopでシーンの移動ができない

ID: FN0205002 Product: Flash

Platform: All
Version: 5.0 and above

'gotoAndPlay'あるいは'gotoAndStop'は、指定したフレームに移動して再生を続ける('gotoAndPlay')か、そこで再生を停止します('gotoAndStop')。

1. 独立のアクションとMovieClipのメソッド
実はこの命令には、異なる2つの種類があります。ひとつは、(1)独立のアクションです。これは、ver.4互換のアクションで、ターゲットパスを指定しません。もうひとつは、(2)MovieClipのメソッドの'gotoAndPlay'あるいは'gotoAndStop'です。こちらは、ターゲットとなるMovieClipを指定する必要があります。

2つの命令の大きな違いは、独立のアクションが「シーン」を指定できることです。つまり、このアクションは、つぎのように記述します。

gotoAndPlay(シーン, フレーム);
gotoAndStop(シーン, フレーム);

ところで、MovieClip内には、「シーン」が作成できません。「シーン」は、メインのタイムラインにしか存在しないのです。ですから、「シーン」を指定するこのアクションは、メインのタイムライン、つまり'_root'でしか使用できません。

これに対して、MovieClipのメソッドは、ターゲットパスを指定したうえで、以下のようにフレームのみを引数に取ります。

myMovieClip.gotoAndPlay(フレーム);
myMovieClip.gotoAndStop(フレーム);

問題は、MovieClipの中でも、シーンの指定が一応できてしまうことです。もちろん、'_root'で使用しなければ、シーンの指定は無意味です。ただ、まったく動作しない訳ではありません。アクションは、スクリプトの記述されたMovieClipを対象として認識します。そして、「シーン」の指定は無視します。つまり、メインのタイムライン('_root')ではなく、スクリプトを記述したMovieClipに対してフレームの移動が実行されることになります。

2. シーンは1本のタイムラインに
シーンは、タイムラインを分割して管理できる便利な機能です。けれども、これはオーサリング時、つまりFlashアプリケーションでムービーを作成しているときのみのインターフェイスであることに注意が必要です。SWFファイルに書出されると、すべてのシーンは1本のタイムラインにつなげられてしまいます。したがって、たとえシーンは別であっても、同じ名前のフレームラベルを設定することはできません。

また、独立のアクション'gotoAndPlay'または'gotoAndStop'でシーンとフレームを指定した場合、SWFファイルには1本につなげたタイムラインの中のフレーム番号に変換されて書出されます。つまり、シーン名自体はSWFファイルには保持されないのです。そのため、アクションの中で「シーン」を「変数」にして、移動するシーンをダイナミックに変更することはできません。たとえば、以下のスクリプトは、エラーになります。

sScene = "シーン 1";
gotoAndStop(sScene, 5);

シーンは変数でなく、必ずストリングつまりダブルクォーテーション(")で囲ったかたちで指定しなければならないのです。

3. フレームラベルを使いましょう
独立のアクション'gotoAndPlay'および'gotoAndStop'を、MovieClipのメソッドと比較して、問題点を検討してきました。結論としては、制約の多い独立のアクションより、MovieClipのメソッドを使う方が、スクリプティングの自由度は高いといえます。

MovieClipのメソッドでは、「シーン」が指定できないという難点はあります。しかし、これもフレームラベルを活用することにより、対応は可能です。gotoAndPlay("シーン 1", 5)とする替わりに、フレームラベルをつけてthis.gotoAndPlay("Scene1_Start")とすればよいからです。MovieClipのメソッドですから、ターゲットパスに'_root'を指定すれば、MovieClipからメインのタイムラインのフレーム移動を行うこともできます。

Macromediaテクニカルノートの「シーンへ移動できないのは何故か」は、あまりに簡潔すぎて、何を説明しているのかわかりません。おそらく、本稿と同じことを意味しているものと思われます。

_____

作成者: 野中文雄
更新日: 2002年6月17日 記述の誤りを修正
更新日: 2002年5月26日 3にMacromediaテクニカルノートへの参照を追加
作成日: 2002年5月16日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.