ActionScript® では、実行時にタイムラインを制御できます。ActionScript を使用することによって、タイムラインだけでは実現できないインタラクションや FLA ファイル内の他の機能を作成できます。

ActionScript® では、実行時にタイムラインを制御できます。ActionScript を使用することによって、タイムラインだけでは実現できないインタラクションや FLA ファイル内の他の機能を作成できます。

ActionScript でのタイムラインの制御について詳しくは、Web ヘルプのタイムラインと ActionScript に関する説明を参照してください。

絶対パス

絶対パスは、ドキュメントがロードされるレベルの名前で始まり、表示リスト内のターゲットインスタンスに達するまで続きます。また、エイリアス _root を使用して、現在のレベルの最上位タイムラインを参照することもできます。例えば、ムービークリップ california 内のアクションがムービークリップ oregon を参照する場合、使用される絶対パスは _root.westCoast.oregon となります。

Flash Player で最初に開くドキュメントは、レベル 0 でロードされます。追加でロードされるドキュメントごとにレベル番号を割り当てる必要があります。ActionScript の絶対参照を使用してロードされたドキュメントを参照する場合は、_levelX の形式を使用します。この場合、X は、ドキュメントのロード先のレベル番号です。例えば、Flash Player 内で最初に開くドキュメントは _level0 と呼ばれ、レベル 3 にロードされるドキュメントは _level3 と呼ばれます。

様々なレベルのドキュメント間で通信を行うには、ターゲットパスでレベル名を使用する必要があります。次の例は、portland インスタンスで atlanta インスタンスをアドレス指定する方法を示しています。atlanta インスタンスは georgia と呼ばれるムービークリップ内にあり、georgiaoregon と同じレベルです。

_level5.georgia.atlanta

エイリアス _root を使用して、現在のレベルのメインタイムラインを参照することができます。メインタイムラインで _root エイリアスが _level0 を表すのは、ムービークリップが _level0 もターゲットとしている場合です。_level5 にロードされるドキュメントで _root_level5 が等しくなるのは、ムービークリップがレベル 5 もターゲットとしている場合です。例えば、ムービークリップ southcarolinaflorida がどちらも同じレベルでロードされる場合、southcarolina から呼び出されるアクションは、次の絶対パスを使用して florida インスタンスをターゲットに指定します。

_root.eastCoast.florida

相対パス

相対パスは、コントロールタイムラインとターゲットタイムラインの間の関係によって決定されます。相対パスは、Flash Player の同一レベル内のターゲットのみをアドレス指定できます。例えば、_level0 上のアクションが _level5 上のタイムラインをターゲットとする場合、このアクションでは相対パスを使用できません。

相対パスでは、キーワード this を使用して、現在のレベルの現在のタイムラインを参照することができます。また、エイリアス _parent を使用して、現在のタイムラインの親タイムラインを示すことができます。_parent エイリアスを繰り返し使用して、Flash Player の同一レベル内でムービークリップの階層を 1 レベルずつ上に移動することができます。例えば、_parent._parent は階層内の 2 つ上のレベルまでムービークリップを制御します。Flash Player の各レベル内の最上位タイムラインに限り、_parent の値は undefined となります。

charleston インスタンスのタイムラインのアクションが southcarolina の 1 つ下のレベルに配置されている場合は、次のターゲットパスを使用して southcarolina インスタンスがターゲットに指定されます。

_parent

eastCoast インスタンス(1 レベル上)を charleston 内のアクションからターゲットに指定するには、次の相対パスを使用します。

_parent._parent

atlanta インスタンスを charleston のタイムラインのアクションからターゲットに指定するには、次の相対パスを使用します。

_parent._parent.georgia.atlanta

相対パスは、スクリプトの再利用に役立ちます。例えば、次のスクリプトをムービークリップにアタッチすると、その親を 150% に拡大できます。

onClipEvent (load) {    _parent._xscale 
= 150;    _parent._yscale = 150; 
}

このスクリプトは任意のムービークリップインスタンスにアタッチして再利用できます。

注意:

Flash Lite 1.0 および 1.1 は、ボタンにアタッチされたスクリプトのみをサポートします。ムービークリップへのスクリプトのアタッチはサポートされません。

絶対パスと相対パスのどちらを使用する場合でも、タイムライン内の変数またはオブジェクトのプロパティを識別するには、ドット(.)に続けて変数またはプロパティの名前を指定します。例えば、次のステートメントでは、name 変数(form インスタンス内)の値が "Gilbert" に設定されます。

_root.form.name = "Gilbert";

絶対ターゲットパスと相対ターゲットパス

ActionScript を使用すると、タイムライン間でメッセージを送ることができます。アクションを含んでいるタイムラインをコントロールタイムラインと呼び、アクションを受け取るタイムラインをターゲットタイムラインと呼びます。例えば、あるタイムラインの最後のフレームに、他のタイムラインに再生を指示するアクションが含まれているとします。ターゲットタイムラインを参照するには、表示リスト内のムービークリップの場所を示すターゲットパスを使用しなければなりません。

次の例は、californiaoregonwashington という 3 つのムービークリップが含まれた、レベル 0 の westCoast というドキュメントの階層を示しています。それぞれのムービークリップに、2 つずつムービークリップが含まれています。

_level0 
        westCoast 
                california 
                        sanfrancisco 
                        bakersfield 
                oregon 
                        portland 
                        ashland 
                washington 
                        olympia 
                        ellensburg

Web サーバー上と同様、Animate 内の各タイムラインは、絶対パスと相対パスという 2 つの方法でアドレス指定できます。インスタンスの絶対パスは、どのタイムラインがアクションを呼び出すかに関係なく、常にレベル名からのフルパスです。例えば、インスタンス california を指す絶対パスは常に _level0.westCoast.california です。相対パスは、異なる場所から呼び出されると、異なるパスになります。例えば、california を指す相対パスは、sanfrancisco から呼び出される場合は _parent となりますが、portland から呼び出される場合は _parent._parent.california となります。

ターゲットパスの指定

ムービークリップ、ロードした SWF ファイル、ボタンを制御するには、「ターゲットパス」を指定する必要があります。ターゲットパスは、手動で指定する方法、ターゲットパスの挿入ダイアログボックスを使用する方法、またはターゲットパスを評価する式を作成する方法があります。ムービークリップまたはボタンにターゲットパスを指定するには、あらかじめムービークリップまたはボタンにインスタンス名を割り当てておく必要があります。レベルにロードされたドキュメントの場合は、レベル番号(_level5 など)をインスタンス名として使用するため、インスタンス名は必要ありません。

ムービークリップまたはボタンへのインスタンス名の割り当て

  1. ステージで、ムービークリップまたはボタンを選択します。
  2. プロパティインスペクターで、インスタンス名を入力します。

ターゲットパスの挿入ダイアログボックスによるターゲットパスの指定

  1. アクションを割り当てるムービークリップ、フレーム、またはボタンのインスタンスを選択します。

    これはコントロールタイムラインになります。

  2. アクションパネル(ウィンドウ/アクション)の左側にある「アクション」ツールボックスで、ターゲットパスを必要とするアクションまたはメソッドを選択します。
  3. パラメーターボックス、またはスクリプト内のターゲットパスを挿入する場所をクリックします。
  4. スクリプトペインの上にある「ターゲットパスの挿入」ボタン をクリックします。
  5. ターゲットパスモードに対して「絶対」または「相対」を選択します。
  6. 「ターゲットパスの挿入」の表示リストでムービークリップ名を選択し、「OK」をクリックします。

手動でのターゲットパス指定

  1. アクションを割り当てるムービークリップ、フレーム、またはボタンのインスタンスを選択します。

    これはコントロールタイムラインになります。

  2. アクションパネル(ウィンドウ/アクション)の左側にある「アクション」ツールボックスで、ターゲットパスを必要とするアクションまたはメソッドを選択します。
  3. パラメーターボックス、またはスクリプト内のターゲットパスを挿入する場所をクリックします。
  4. アクションパネルに絶対ターゲットパスまたは相対ターゲットパスを入力します。

ターゲットパスとしての式の使用

  1. アクションを割り当てるムービークリップ、フレーム、またはボタンのインスタンスを選択します。

    これはコントロールタイムラインになります。

  2. アクションパネル(ウィンドウ/アクション)の左側にある「アクション」ツールボックスで、ターゲットパスを必要とするアクションまたはメソッドを選択します。
  3. 次のいずれかの操作を行います。
    • パラメーターボックスに、ターゲットパスを求める式を入力します。

    • クリックして、スクリプト内に挿入ポイントを設定します。次に、「アクション」ツールボックスの「関数」カテゴリで、targetPath 関数をダブルクリックします。targetPath 関数は、ムービークリップへの参照をストリングに変換します。

    • クリックして、スクリプト内に挿入ポイントを設定します。次に、「アクション」ツールボックスの「関数」カテゴリで、eval 関数を選択します。eval 関数は、ストリングを play などのメソッドの呼び出しに使用できるムービークリップ参照に変換します。

      次のスクリプトは、変数 i に値 1 を割り当てます。次に、eval 関数を使用して、ムービークリップインスタンスへの参照を作成し、それを変数 x に割り当てます。これで、変数 x はムービークリップインスタンスへの参照になり、MovieClip オブジェクトのメソッドを呼び出せるようになります。

      i = 1; x = eval("mc"+i); x.play(); // this is equivalent to mc1.play();

      また、次の例のように eval 関数を使用してメソッドを直接呼び出すこともできます。

      eval("mc" + i).play();

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー