Flash AS3-从类调用根时间线中的函数
我想从外部类调用Flash根时间线内的函数 此代码来自类:Flash AS3-从类调用根时间线中的函数,flash,actionscript-3,Flash,Actionscript 3,我想从外部类调用Flash根时间线内的函数 此代码来自类: private function loadImage(event:Event):void { addToContainer() } 在主时间表中: function addToContainer():void { trace("Called") } 如何管理它?尝试使用 MovieClip(根) 访问主时间线。是否需要将addToContainer()放入时间线 我会考虑把你的代码完全从时间线中移除,而用一个
private function loadImage(event:Event):void
{
addToContainer()
}
在主时间表中:
function addToContainer():void
{
trace("Called")
}
如何管理它?尝试使用
MovieClip(根)
访问主时间线。是否需要将addToContainer()放入时间线 <>我会考虑把你的代码完全从时间线中移除,而用一个AdtoCube来创建一个“文档类”。这样可以更容易地跟踪您所看到的内容
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();
}
}
您可以将事件侦听器添加到主时间线中的对象。在对象上触发此事件时,将调用主时间轴中的函数
//Main Timeline
var obj:YourExternalClass = new YourExternalClass();
obj.addEventListener(MouseEvent.CLICK, addToContainer);
最好也是最简单的方法是将主时间线作为参数推送到类中:
public static var _this:Object;
在类中设置一个变量:
public static var _this:Object;
现在,在主时间轴中设置此变量:
MyClass._this=this;
_this.addToContainer()
现在,在您的课堂上,您可以使用\u此
变量访问主时间轴:
MyClass._this=this;
_this.addToContainer()
I H☺这有帮助 @Tom你需要确保你的类是一个
DisplayObject
,并且被添加到后台才能工作。如果这两个都不可能(您的外部类没有使用DisplayObject作为基础),那么您需要将引用传递到主时间线或其他位置的DisplayObject。如何使类成为DisplayObject?是的,我需要将addToContainer()放在时间线中,抱歉,那么您需要将外部类a链接传递到显示根目录。我已经更新了我的答案,给出了一个可能的例子。