AS3 - 来自类的根时间轴中的调用函数

时间:2011-12-08 20:44:01

标签: flash actionscript-3

我想从外部类调用Flash的根时间轴内的函数。

此代码来自班级:

private function loadImage(event:Event):void
{
    addToContainer()   
}

在主时间轴中:

function addToContainer():void
{
    trace("Called")
} 

如何管理?

4 个答案:

答案 0 :(得分:2)

您是否需要在时间线中添加addToContainer()?

我会考虑完全从时间轴中删除你的代码,并在其中创建一个带有addToContainer的“Document类”。这样可以更容易地跟踪您正在查看的内容。

public class FunctionTest extends MovieClip {
   protected static var _this:FunctionTest;
   function FunctionTest() { _this = this; }
   public static function get application_root():FunctionTest { return _this; }
   public function addToContainer():void { trace("Called"); }
}

现在您有两种编写loadImage的方法。如果它在DisplayObject中(根据Marty Wallace先前的评论),你可以说类似

(this.root as FunctionTest).addToContainer();

如果没有,您可以在任何地方使用替代方案:

FunctionTest.application_root.addToContainer();

如果你真的必须在时间轴中定义addToContainer(),那么你需要使用指向显示根的链接初始化外部类。做类似的事情:

public class LoadImageClass {
   protected var _stored_root:MovieClip;
   function LoadImageClass(new_root:MovieClip) { this._stored_root = new_root; }
   public function loadImage():void {
      this._stored_root.addToContainer();
   }
}

答案 1 :(得分:0)

尝试使用

MovieClip(root)

访问主时间轴。

答案 2 :(得分:0)

您可以在主时间轴中向对象添加事件侦听器。当您的对象触发此事件时,将调用主时间轴中的函数。

//Main Timeline
var obj:YourExternalClass = new YourExternalClass();

obj.addEventListener(MouseEvent.CLICK, addToContainer);

答案 3 :(得分:0)

最好也是最简单的方法是将主时间轴作为您班级的参数:

在班级中设置变量:

public static var _this:Object;

现在在主时间轴中设置此变量:

MyClass._this=this;

现在,在您的课程中,您可以使用_this变量访问主时间轴:

_this.addToContainer()

我这是有帮助的!