从类中触发主时间轴上的函数?

时间:2012-12-07 00:57:53

标签: actionscript-3

我试图从类文件中触发FLA中主时间轴上的一个函数。我通常可以找到通过论坛帖子筛选的解决方案,但我看到的所有内容都没有帮助。

这是我现在拥有的代码,但它似乎没有起作用。

//this is the code in my as3 class file
var e:Event = new Event("runFunc",true)                  dispatchEvent(e)

//here is the code in my .fla       
addEventListener("runFunc", initialization);

我知道在FLA中使用代码是一种肮脏的编码方法,但我正在尝试添加到我之前构建的预先存在的游戏中。

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是使用此方法将代码移出时间轴。

// class file
public function Main() {
    //constructor
    this.addFrameScript(1, frameOneFunc);
    initialization();
}
private function frameOneFunc(){
    This is essentially code in timeline for frame one.
}

答案 1 :(得分:0)

我不太乐意跟着你,你是说要将我的代码从fla中删除并将其粘贴到类文件中的frameOneFunc中吗?

以下是一些更多的代码。

.fla代码(我试图运行的函数)

function initialization();
{
    //random code...
}

我的班级文件中的代码

public function frame1()
{
    this.savedstuff = SharedObject.getLocal("myStuff");
    this.btnSave.addEventListener(MouseEvent.CLICK, this.SaveData);
    this.btnLoad.addEventListener(MouseEvent.CLICK, this.LoadData);
    if (this.savedstuff.size > 0)
    {
//trying to trigger function here...this is my failed code below
            //MovieClip(parent).initialization();
            //var e:Event = new Event("runFunc",true)
             //dispatchEvent(e)
            //dispatchEvent(new Event("initialization"));
            this.nameField.y = 800

            this.note.y = 800

            this.btnSave.y = 800

            this.btnLoad.y = 800
            this.tigger.y = 0;

            trace(this.savedstuff.data.username);
        this.nameField.text = this.savedstuff.data.username;
        this.note.gotoAndStop(4);
    }
    return;
}