如何从AS类调用.FLA内的函数

时间:2013-03-12 13:13:52

标签: actionscript-3 flash oop air main

我的主类被添加到我的.fla阶段,我想在完成动画时删除并重新添加/“重启”该类。我的所有动画都发生在Main中,并被添加到Main内的显示树中。如何在Main.as中运行finishNow()函数?

.fla文件:

var run:Main = new Main(this);
stage.addChild(run);

function finishNow() {
    stage.removeChild(run);
    var run:Main = new Main(this);
    stage.addChild(run);
}

Main.as文件:

var stageHolder:Object;

public function Main(stageHolderTemp) {
        stageHolder = stageHolderTemp; 
        trace(stageHolder);
}

function callFinishFunction():void {
    // how to call finishNow() function from .fla file here
}

编辑:该计划的设计已经改变。仍在尝试做同样的事情(调用finishNow()函数 - 但它现在在Program.as中)。一切正常,除了引发program.finishNow();的错误:

TypeError:错误#1009:无法访问空对象引用的属性或方法。

.fla文件:

它现在不包含任何代码。它与Program.as相关联。

Program.as文件:

package  {

    import flash.display.MovieClip;

    public class Program extends MovieClip {


        public function Program() {

            startNow();
        }

        function startNow() {
            var run:Main = new Main(this);
            addChild(run);
        }

        function finishNow() {
            removeChild(run);
            var run:Main = new Main(this);
            addChild(run);
        }

    }

}

Main.as文件:

package {

    import flash.display.Sprite;

    public class Main extends Sprite
    {

        var stageHolder:Object;
        public var program:Program;

        public function Main(stageHolderTemp) {
            stageHolder = stageHolderTemp; 
            trace(stageHolder);

            someFunctionsThatDrawGraphics();
        }

        function callFinishFunction():void {
            // how to call finishNow() function from Program.as file here?
            program.finishNow();
        }

    }
}

3 个答案:

答案 0 :(得分:0)

如果你的.fla链接到Main.as文件,你可以直接调用。试试这个:

public function Main() {
        finishNow();
}

enter image description here

.fla code

function testFunction()
{
    trace("111");
}

.as file

package  {

    import flash.display.MovieClip;


    public class Main extends MovieClip {


        public function Main() {

            testFunction();
        }
    }

}

答案 1 :(得分:0)

您可以致电addframeScript来调用FLA功能。

答案 2 :(得分:0)

实际上,不需要每次都创建类对象。每次调用该类中的函数就足够了。

但是对于你的问题...... 试试这个....

your Document Class

在program.as

    var run:Main = new Main(this);
    run.addEventListener("FINISH",finishNow);
    addChild(run);
    function finishNow(e:Event)
    {
     }

在main.as中,

function callFinishFunction():void
 {
  dispatchEvent(new Event("FINISH"));
 }