2012-04-26 9 views
0

はタイムラインと統合する必要があります(この場合は、特定のシーケンスで発生する一連のフレームを制御する)というActionscriptを記述する必要があります。私は何をすべきかを考えようとしています。最初のフレームにタイムラインインスタンスがありません

最初の数フレームでは、「next_1」というボタンがあります。

フレーム10では、別のボタン「next_2」が必要です。私は本当にこのボタンがフレーム1にないようにする必要があります(私はおそらくそれを不可視にすることができますが、それは私が欲しくないクリック可能な領域を作成することになります)。

問題は、私が "frame_1"に置いていないものは、Documentクラスのnullとしてレンダリングすることです。

これに解決策はありますか?可能であれば、スクリプトをタイムラインに書く必要はありません(ドキュメントクラスに保管することは長期的には簡単に思えます)...

答えて

1

タイムラインの項目はオンザフライで作成されるため、再生ヘッドがフレーム10に達していない場合、次の2は作成されません。

簡単な文書クラス溶液:

  1. [ "LABEL1"、 "LABEL2"]のようなフレームラベル
  2. のアレイを作成sectionIndexのVARを作成し、0
  3. に設定し、次のボタンを作成します独自のレイヤーに表示されるので、常に表示されます。次のボタンがクリックされる
  4. 、sectionIndexをインクリメントし、その後のgotoAndPlay(myLabels [sectionIndex])
+0

ああ、フレームラベルを使用して...それは私に思い出させる... – redconservatory

0

さて、直接 "実世界のフラッシュゲーム開発" から持ち上げ:

/************************************************** 
* FRAME LABELS * 
**************************************************/ 
private function enumerateFrameLabels():void { 
    for each (var label:FrameLabel in currentLabels) { 
     addFrameScript(label.frame-1, dispatchFrameEvent); 
    } 
} 

private function dispatchFrameEvent():void { 
    dispatchEvent(new Event(currentLabel, true)); 
} 

これは派遣タイムライン上の各フレームラベルのイベント。

addEventListener("name_of_my_framelabel", frameHandler); 
addEventListener("another_framelabel", frameHandler); 

をして、実際にタイムライン上に表示するときのボタンのイベントリスナーを追加するためにswitch文を記述します。

次に、あなただけのフレームごとにイベントリスナーを追加することができます。

private function frameHandler(e:Event):void { 
      switch(e.type) { 
       case 'screen_2': 
        stop(); 
        next_2.addEventListener(MouseEvent.CLICK, click2, false, 0, true) 
       break; 
      } 
     } 
+0

確かに、あなたのボタンは、アニメーションの不可欠な一部であり、分離できない場合。それでも簡単なenterFrameハンドラとcurrentFrameLabelのチェックで十分です。しかし、あなたはすばらしいaddFrameScriptを使用することはできません.... –

関連する問題