我有.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);
}
...
}
}
提前致谢!
答案 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();