ios - 是否可以将现有的 SWF 嵌入到 Air for iOS 应用程序中?

标签 ios actionscript-3 flash

我的一位客户有很多 SWF,他想将它们移植到 iPad。但是,他只有 SWF,没有 FLA。

我想知道这是否是一种在 Air for iOS 应用程序中运行 SWF 的方法。我读过您可以使用 Loader 导入,但它们只会作为动画运行而忽略其中的所有代码。

谢谢,欢迎任何帮助!

[更新] 我读过一些关于使用 SWC 的内容,但仍然不确定他们是否会运行代码。

最佳答案

2012 年 10 月更新:

在 Adob​​e AIR 3.5 中,adl 引入了一项称为“多 SWF 支持”的功能,允许使用加载程序加载 .ipa(本地文件,而不是来自服务器)中提供的 SWF,以便在其中包含代码。 adl 编译器 AOT 编译包含在 .ipa 中的 SWF,允许它们在 iOS 下加载和工作。

在撰写本文时,AIR 3.5 目前处于测试阶段,可在 adobe labs 网站上获取:

请注意,此功能需要 -swf-version=18 或更高版本的根 SWF(不一定是正在加载的 Assets )和应用程序 xml 文件中以 3.5 结尾的 AIR 命名空间。

较旧的答案:

带有代码的外部 SWF 不起作用的原因是 Air 的 ADT 编译器将您的根 SWF(并且只有您的根 swf)交叉编译为 iOS 设备可使用的 objective-c 代码。 [嵌入式] SWF 和 .ipa(AIR 3.5 之前的版本)中包含的 SWF 均未交叉编译。

我为嵌入式 Assets 的这个问题创建了一个解决方法:

[Embed(source="gameLevel.swf")]
  private var gameLevel:Class;

 ...

 addChild(new gameLevel());

在这种情况下,如果 gameLevel.swf 中有代码,它通常不会在 iOS 中运行,因为 new gameLevel() 会创建加载程序并解释 SWF 字节码。但是,如果您首先通过我的名为 SWFMerge 的工具运行上述 SWF,它会将您的嵌入式 SWF 合并到您的根 SWF 中。结果是 ADT 会将您的嵌入式代码编译成 Objective-C,它将在 iOS 上运行,并注意:new gameLevel() 现在会生成您的 Assets 实例 - 而不是加载器。

SWFMerge 工具在这里:

http://www.onetacoshort.com/temp/SWFMerge_alpha.swf

LMK 如果此变通方法适合您或您遇到问题。干杯!

-杰夫

关于ios - 是否可以将现有的 SWF 嵌入到 Air for iOS 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507533/

相关文章:

ios - UICollectionView 的 UICollectionViewCell 中的图像在滚动后以编程方式创建重叠

actionscript-3 - 在 Actionscript 3 中实现单例模式类的最佳方法是什么?

CSS 菜单不会出现在 Flash 上

animation - 在Haxe/OpenFL应用程序中使用SWF动画

ios - 如何在 ios 中的自定义表格单元格内创建按钮操作

ios - Flutter ios 版本构建失败,退出代码为 1

ios - 在 unwind 中强制 segue

actionscript-3 - 更改 AMFChannel 中端点的协议(protocol),如何修复?

flash - AS3 - 未定义属性的访问(静态变量)

css - 弹出式菜单在 Chrome、Opera 和 Safari 中的 flash 下弹出