2011-06-23 87 views
0

在解雇之前,我知道这里有很多关于SO的问题非常相似。然而,没有任何解决方案对我有任何帮助,可能是因为我的案例有点不同。控制/初始化外部类[AS3]

我有一个加载外部类(单独的.as文件)的主类。在这个外部类中,有几个对象绑定了补间和时间事件。 我想要做的是在我的Main类中调用某个函数时启动动画。但是,我已经尝试了许多事情来停止和/或重置外部类中的动画,因此如果调用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. 
     } 
    } 
} 

在这个类中一切正常,所以这不是问题。 如果这有什么不同,我在MyClass中使用TweenMax进行补间。我没有在.fla中使用时间线。

任何帮助将不胜感激!

回答

2

如果您不想在创建MyClass时创建动画,请从MyClass的构造函数中删除startTweening();

品牌startTweening(); a 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