我正在尝试学习ActionScript 3,以便使用Air for Mobile(Android)功能。我有两个swf文件,并希望从第一个文件加载并运行第二个文件。当我将这两个文件打包为apk时,这可以正常工作。
但是如果将第二个swf文件放在用户存储器中,则文件已加载,但不会等待用户交互.swf会像视频一样播放。
这是我在第一个文件中写的加载第二个文件的内容。
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest("file:///storage/emulated/0/swfs/second.swf"));
function onLoaded(e:Event):void
{
addChild(loader);
}
如果有人能指出我正确的方向,我真的很感激。
这是second.swf中的代码。事件虽然现在我可以看到按钮..点击事件不起作用。现在我不确定这个问题是否与AS3完全相关。
loader.contentLoaderInfo.addEventListener(Event.ENTER_FRAME, handleReady );
function handleReady( initEvent:Event ):void
{
trace("Enter-Frame");
MovieClip(initEvent.currentTarget.content).stop();
}
button.addEventListener(MouseEvent.CLICK,touchfun);
function touchfun(e:MouseEvent)
{
trace("btn click");
button.visible=false;
}
答案 0 :(得分:3)
你应该设置" allowCodeImport"在加载第二个swf的第一个swf中为true。首先,您需要一个上下文对象来设置标志;
var context:LoaderContext = new LoaderContext();
context.allowCodeImport = true;
然后你应该将这个上下文对象传递给你的加载器;
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest("file:///storage/emulated/0/swfs/second.swf"), context);
function onLoaded(e:Event):void
{
addChild(loader);
}