2011-06-23 11 views
0

非常に似ているので、ここでは多くの質問があります。しかし、与えられた解決策のどれも、私の事例が少し違うので、おそらく私にとっては何の助けもありませんでした。外部クラスを制御/初期化する[AS3]

私は外部クラス(別の.asファイル)をロードするメインクラスを持っています。この外部クラスには、トゥイーンとタイムイベントがバインドされたオブジェクトがいくつかあります。 メインクラスで特定の関数が呼び出されると、アニメーションが開始されます。しかし、私は、外部クラスのアニメーションを停止および/またはリセットするために何度も試したことがあるので、Mainで必要な関数が呼び出されると、最初から開始されます。

Main.as:

package { 
    //required imports 

    public class Main extends MovieClip { 
    var myClass:MyClass = new MyClass; //this is the external class 
    var button:Button = new Button; //movieclip in the library 

     public function Main() { 
     addChild(myClass); //I want to do this here so the objects show from the start 
     //try 1: myClass.gotoAndStop(1); 
     //try 2: myClass.stop(); 

     button.addEventListener(MouseEvent.MOUSE_CLICK, playAnimation); 
     } 

     function playAnimation (e:MouseEvent) { 
     //try 1: myClass.gotoAndPlay(1); 
     //try 2: myClass.start(); 
     //try 3: controlling the startTweening() function in MyClass, I tried different ways 
     } 
    } 
} 

問題は、上記のメインクラスで起動します。私はまだアニメートしたくありません!

MyClass.as:このクラスの

package { 
    //required imports 

    public class MyClass extends MovieClip { 
     //vars 

     public function MyClass() { 
     startTweening(); 
     } 
     function startTweening() { 
     //tween event 
     //calling next function (with use of a TimerEvent) after tween is done. This is repeated several times. 
     } 
    } 
} 

すべてが正常に動作しますので、それは問題ではありません。 これが何か変わる場合は、TweenMaxをMyClassでトゥイーンに使用しました。私は.flaでタイムラインを使用しませんでした。

ご協力いただければ幸いです。

答えて

2

MyClassの作成時にアニメートしない場合は、startTweening();のコールをコンストラクタMyClassから削除します。

startTweening();publicとし、必要に応じていつでもmyClass.startTweening()と呼んでください。

ここ

MyClassの

public class MyClass extends MovieClip { 
    //vars 

    public function MyClass() { 

    } 

    public function startTweening() { 
    //tween event 
    //calling next function (with use of a TimerEvent) after tween is done. This is repeated several times. 
    } 
} 

とここでの主なクラス

public class Main extends MovieClip { 
    var myClass:MyClass; 
    var button:Button = new Button; //movieclip in the library 

     public function Main() { 
     myClass = addChild(new MyClass()) as MyClass; 
     button.addEventListener(MouseEvent.MOUSE_CLICK, playAnimation); 
     } 

     function playAnimation (e:MouseEvent) { 
     myClass.startTweening(); 
     } 
    } 
+1

+1すべてのクラスのコンストラクタは自動的にそのクラスのインスタンス化に呼び出されます。 –

+0

うわー、それはそれが簡単だと思うのです...ありがとうダニエル! ----もう一つの質問ですが、 "var myClass = addChild(new MyClass())と" MyClass "の違いは何ですか?と "var myClass:MyClass = new MyClass;" – poepje

+0

実際の違いはありませんが、個人的にはクラスプロパティ定義で複雑な型の値を決して割り当てません。複雑なタイプのインスタンスを、必要なときに作成します。 – DanielB

関連する問題