如何将变量从.fla文件传递到as3中的.as文件

时间:2016-12-29 20:56:26

标签: actionscript-3 flashdevelop

我有.fla文件名test.fla,我有这个变量:

import Main;

var my_var;

stage.addEventListener(MouseEvent.CLICK, onLoaded);

function onLoaded(e:Event):void
{
 my_var = "Maziar";
 //trace(my_var);
}

我有一个名为Main.as的.as文件。

我想将 my_var 从test.fla传递给Main.as。

如果你能在这件事上帮助我,我将非常感激!

值得注意的是,我使用了" Actionscript 3 : pass a variable from the main fla to external as file"中提到的方法,但它对我不起作用!!!

我在Main.as中写道:

package 
{
import flash.display.Sprite;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;

public class Main extends Sprite
{
    public function Main()
    {
        if (stage)
        {
            init();
        }
        else
        {
            addEventListener(Event.ADDED_TO_STAGE, init);

        }

        addEventListener(Event.ENTER_FRAME, waitForMyVar);
    }

    private function waitForMyVar(e:Event):void
    {
        if (my_var != null)
        {
            trace(my_var);
            removeEventListener(Event.ENTER_FRAME, waitForMyVar);
        }

    }

    private function init(e:Event = null):void
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);
    }
 ...
 }
}

提前致谢!

2 个答案:

答案 0 :(得分:0)

请务必注意,ActionScript文档文件中的构造函数WHERE data LIKE '%keyWord%'; 是在框架中找到的代码之前运行的。当您尝试访问AS文档中的Main变量时,它尚未在框架中声明。

因此,我们需要等待Flash运行该帧。这可以使用my_var监听器来完成。

实施例

时间轴代码(.fla文件)

Event.ENTER_FRAME

文档代码(.as文件)

var my_var:String = "my variable";

作为旁注,在用户点击阶段之前,似乎未为package { import flash.display.MovieClip; import flash.events.Event; public class Main extends MovieClip { public function Main() { addEventListener(Event.ENTER_FRAME, waitForMyVar); } private function waitForMyVar(e:Event):void { trace(my_var); removeEventListener(Event.ENTER_FRAME, waitForMyVar); } } 分配值。可以在my_var函数中进行调整,以等待waitForMyVar非空。

实施例

my_var

希望这有帮助!

答案 1 :(得分:0)

使用静态类成员。

public class Main extends Sprite
{
    static public var globalVar:* = 1;

    public function doWhatever():void
    {
        trace(globalVar);
    }
}

然后在FLA中:

import Main;

var M:Main = new Main();
// or use sprite instance of Main

M.doWhatever();
Main.globalVar = "Hello World!";
M.doWhatever();