在Air Mobile中加载外部交互式swf

时间:2015-10-01 07:35:42

标签: android actionscript-3 flash air

我正在尝试学习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;
} 

1 个答案:

答案 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);
}