0

我正在尝试制作一个 AS3 包装器来将一组旧的 Flash 游戏(AS2)移植到我的 Android 手机上。我已成功加载并运行(在 CS5.5 中的 sim/run 窗口 ctrl+Enter)旧 AS2 .swf,代码如下:

// This is the Loader instance that will load your SWF.
var swfLoader:Loader = new Loader();

// URLRequest points to your external SWF
var swfFile:URLRequest = new URLRequest("ha2.swf");

//create the container Movie Clip to load swf
var container:MovieClip= new MovieClip();

// Assign an event listener so that Flash informs you when the SWF has been loaded.

swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadedHandler);

function swfLoadedHandler(e:Event):void {
    trace("swf loaded");
//(e.target.content).stop();//returns null reference for stop function

}

swfLoader.load(swfFile);

//just add the loaded swf to container
container.addChild(swfLoader);
//add container to the stage and make it visible

addChild(container);

这在 PC 上运行良好并按应有的方式加载了 swf,但是一旦我将它发布到 android,它会在循环中超快地跳过 AS2 应用程序的帧,而不是像在 sim 中那样遵循脚本。

有任何想法吗?是的,我意识到如果将这些游戏重新编码为 AS3,它们会运行得更快,但是其中有很多,我想保留原件并使 shell 成为一种更具动态性(尽管效率较低)的解决方案。

谢谢。

4

1 回答 1

3

AIR 不支持 Actionscript 2。在 AIR 设备模拟器中运行应用程序与在真实设备上运行应用程序不同。我做过类似的尝试在 iOS 上的 AIR 应用程序中加载 AS3 swf。模拟器让我这样做,但真正的 iOS 设备会发出不支持的警告。
您所看到的是所有帧的动画,就好像您的电影中没有脚本一样(因为 AIR 播放器显然忽略了所有 ActionScript 代码)。
将您的游戏重新编码为 AS3 是 Android 的唯一解决方案,如果您也想支持 iOS,您唯一的选择是将它们全部编译到一个应用程序中,因为在 iOS 上甚至不允许加载任何包含代码的外部电影他们。

于 2012-05-20T18:39:41.773 回答