首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将现有的SWF嵌入到iOS应用程序中?

是否可以将现有的SWF嵌入到iOS应用程序中?
EN

Stack Overflow用户
提问于 2012-03-01 06:17:49
回答 2查看 5K关注 0票数 0

我的一个客户有许多主权财富基金,他想把它们移植到iPad。然而,他只有主权财富基金,没有FLA。

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

谢谢,欢迎您的帮助!

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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站点上获得:

  • AIR 3.5 on Adobe labs website
  • AIR 3.5 release notes

请注意,此功能要求应用程序xml文件中具有- SWF -version=18或更高的根SWF(不一定是要加载的资产)和以3.5结尾的AIR名称空间。

较老的答案:

带有代码的外部SWF不工作的原因是Air的ADT编译器交叉编译你的根swf(并且只编译你的根swf)成iOS设备可使用的objective-c代码。嵌入式SWF和包含在.ipa ( AIR 3.5之前)中的SWF都不会进行交叉编译。

我为嵌入式资源创建了一个解决此问题的方法:

代码语言:javascript
复制
[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

票数 2
EN

Stack Overflow用户

发布于 2012-03-01 07:49:01

是的,你可以,

苹果不允许你的应用程序使用Loader从互联网上下载SWF,但你可以在你的.ipa中嵌入和包含它们

为此,您需要使用embed标记

代码语言:javascript
复制
[Embed("myswf.swf", mimeType="application/octet-stream")] private var mySwf:Class;

然后,您可以使用

代码语言:javascript
复制
swf = new mySwf();
swf.addEventListener(Event.COMPLETE, completeHandler);

并与该完整处理程序中的swf进行交互。

我想补充的是,编译无法加载的SWF是可能的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9507533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档