控制/初始化外部类[AS3]

时间:2011-06-23 10:56:06

标签: actionscript-3

在开火之前,我知道这里有很多问题非常相似。然而,给出的解决方案都没有对我有任何帮助,可能是因为我的情况有点不同。

我有一个加载外部类的主类(单独的.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
      }
   }
}

问题始于上面的Main类。我还不想动画!

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中使用时间轴。

任何帮助都会非常感谢!

1 个答案:

答案 0 :(得分: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.
  }
}

这里是Main class

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();
      }
   }