我的一个客户有许多主权财富基金,他想把它们移植到iPad。然而,他只有主权财富基金,没有FLA。
我想知道这是否是一种在iOS应用程序中运行SWF的方法。我读到你可以使用Loader导入,但它们只会作为动画运行,忽略其中的所有代码。
谢谢,欢迎您的帮助!
更新:我读过一些关于使用SWC的文章,但仍然不确定他们是否会运行代码。
发布于 2012-09-03 12:17:40
更新,2012年10月:
在Adobe AIR 3.5中,adl引入了一个称为“多个SWF支持”的功能,允许使用Loaders加载在.ipa中交付的SWF(本地文件,而不是来自服务器),以便在其中包含代码。adl编译器AOT编译包含在.ipa中的SWF,允许它们在iOS下加载和工作。
在撰写本文时,AIR 3.5目前还处于测试阶段,可以在adobe labs站点上获得:
请注意,此功能要求应用程序xml文件中具有- SWF -version=18或更高的根SWF(不一定是要加载的资产)和以3.5结尾的AIR名称空间。
较老的答案:
带有代码的外部SWF不工作的原因是Air的ADT编译器交叉编译你的根swf(并且只编译你的根swf)成iOS设备可使用的objective-c代码。嵌入式SWF和包含在.ipa ( AIR 3.5之前)中的SWF都不会进行交叉编译。
我为嵌入式资源创建了一个解决此问题的方法:
[Embed(source="gameLevel.swf")]
private var gameLevel:Class;
...
addChild(new gameLevel());在这种情况下,如果gameLevel.swf中有代码,它通常不能在iOS中工作,因为新的gameLevel()将创建一个Loader并解释SWF字节码。但是,如果您首先通过我的名为SWFMerge的工具运行上述SWF,它将获取您的嵌入式SWF并将其合并到您的根SWF中。结果是ADT会将你的嵌入式代码编译成objective-C,它会在iOS上工作,注意: new Loader ()现在会生成你的资产的一个实例--而不是一个gameLevel。
SWFMerge工具在这里:
http://www.onetacoshort.com/temp/SWFMerge_alpha.swf
LMK如果此解决方法对您有效,或者如果您遇到问题。干杯!
-Jeff
发布于 2012-03-01 07:49:01
是的,你可以,
苹果不允许你的应用程序使用Loader从互联网上下载SWF,但你可以在你的.ipa中嵌入和包含它们
为此,您需要使用embed标记
[Embed("myswf.swf", mimeType="application/octet-stream")] private var mySwf:Class;然后,您可以使用
swf = new mySwf();
swf.addEventListener(Event.COMPLETE, completeHandler);并与该完整处理程序中的swf进行交互。
我想补充的是,编译无法加载的SWF是可能的
https://stackoverflow.com/questions/9507533
复制相似问题