我想从外部类调用Flash的根时间轴内的函数。
此代码来自班级:
private function loadImage(event:Event):void
{
addToContainer()
}
在主时间轴中:
function addToContainer():void
{
trace("Called")
}
如何管理?
答案 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()
我这是有帮助的!