- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在为 iPhone 制作应用程序时,我对是否嵌入 swf 还是加载它们有点困惑。有谁知道每个的优点是什么(最好使用哪个)?我知道嵌入 swf 应该比加载它们快一点,但仅此而已吗?
另外,这很重要,我读到 Apple 将拒绝任何具有外部 swf 的应用程序?这确实是正确的吗?如果是这样,嵌入或加载所述swfs可以解决这个问题吗?
提前致谢
编辑: 经过一番搜索后,发现 Apple 确实在加载外部 swf 方面存在问题,您仍然可以这样做,但您的 swf 不需要附加任何 ActionScript ,这里有一个链接 http://whizzkid74.blogspot.com/2010/12/air-for-iphone-loading-external-swf.html 它但是没有提到嵌入 swf,所以我的问题是:在 iphone 上编写应用程序时可以嵌入 swf吗?
编辑 为了澄清,当我说外部 SWF 时。我的意思是在您的系统本地找到的 SWF,但您需要将它们添加到您的程序中,因为它们包含您需要的 MovieClips 或 Sprites 等。我并不是指需要从网站或在线资源下载的 SWF。 (希望能够澄清问题)
编辑更改了问题的标题...问题已解决,感谢所有帮助人员,新年快乐=D
最佳答案
更新,2012 年 10 月:
在 Adobe AIR 3.5 中,adl 引入了一项名为“多 SWF 支持”的功能,该功能允许使用加载程序加载 .ipa(本地文件,而不是来自服务器)中提供的 SWF,以便在其中包含代码。 adl 编译器 AOT 编译 .ipa 中包含的 SWF,允许它们在 iOS 下加载和工作。
在撰写本文时,AIR 3.5 目前处于测试阶段,可在 adobe 实验室网站上获取:
请注意,此功能需要根 SWF(不一定是正在加载的资源)的 -swf-version=18 或更高版本以及应用程序 xml 文件中以 3.5 结尾的 AIR 命名空间。
旧答案:
我想更新这个答案,因为自从我第一次研究这个问题以来,我已经学到了很多关于这个问题的知识。
问题的根源在于,当使用 AIR 制作 iOS 应用程序时,Apple TOS 不允许运行时解释代码 - 这包括 SWF 字节码。因此,不允许加载带有代码的 SWF(即使是简单的动画命令,如 stop()、gotoAndPlay() 等),并且无法通过加载程序进行工作(AIR 3.5 之前的版本)。
但是,有一些解决方法。这两种解决方法都通过将包含代码的资源编译到主 SWF 中来避免使用 Loader,因为一旦它们成为主 SWF 的一部分,AIR 编译器 (adt) 就会将代码交叉编译到 Objective-C 中,一切都会正常工作在 iOS 设备上。
使用 SWC 库
这是iOS开发的最佳选择。如果您将图形资源(.fla 文件)编译为 SWC(或从库中的符号导出 SWC),然后针对这些 SWC 编译主 swf,这将通过编译器,并且 ActionScript 代码将在 iOS 设备上执行。
使用 SWFMerge 进行[嵌入]编辑的 SWF
将资源嵌入到 SWF 中非常简单,如下所示:
[Embed(source="GameLevel.swf")]
private var GameLevel:Class;
public function main():void
{
var my_level:* = new GameLevel();
addChild(my_level);
}
在这种情况下,如果 gameLevel.swf 中有代码,它通常在 iOS 中不起作用,因为 new gameLevel() 将创建一个 Loader 并解释 SWF 字节码。但是,如果您首先通过我的名为 SWFMerge 的工具运行上述 SWF,它将获取您的嵌入式 SWF 并将其合并到您的根 SWF 中。然后 ADT 会将您的主 swf(包括嵌入代码)编译为 Objective-C,它将在 iOS 上运行,并注意:new gameLevel() 现在直接生成您的 Assets 实例 - 而不是加载器。
SWFMerge 工具在这里:
http://www.onetacoshort.com/temp/SWFMerge_alpha.swf
请在评论中告诉我此解决方法是否适合您或您遇到问题。
使用加载器
在 AIR 3.5 之前,如果您使用 Loader 加载 SWF 文件(无论该 swf 包含在您的 IPA 中还是从 Web 服务器提供),目标 SWF 图形都可以正常加载,但 SWF 中的任何代码都不会再次执行,因为 Apple 的 TOS 不允许这样做。
从 AIR 3.5 开始,将 .ipa 中的 SWF 文件打包为 Assets ,即使它们包含代码,使用 Loader 也可以正常工作,因为该代码现在由 adt 进行 AOT 编译。这需要应用程序 xml 文件中根 SWF(不一定是资源)和以 3.5 结尾的 AIR 命名空间的 -swf-version=18 或更高版本。
但是,从技术上讲,解释 SWF 字节码是可能的,这只是 App Store 的法律限制。如果您只想在 iOS 设备上进行测试并且不想通过 App Store 分发您的应用程序,则可以使用 adt 的 -target ipa-test-interpreter
选项编译 SWF,并使用以下命令加载 SWF其中的代码将起作用。
关于iphone - 制作 iPhone 应用程序时是否可以嵌入或加载 SWF(Apple 是否允许),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688645/
我正在评估 Amazon SWF 作为构建分布式工作流系统的选项。主要语言将是 Java,因此 Flow 框架是一个显而易见的选择。只有一件事让我感到困惑,在我推荐它作为我们架构中的关键组件之前,我会
我在将我的 swf 文件置于另一个 swf 文件之上时遇到问题。我在这里尝试了解决方案: http://jsfiddle.net/j08691/ezXjx/ #a { position
我正在处理一个项目,我需要打开一个 swf 文件,更改 swf 标签的内容 不接触其他标签 我试过“SwfDotNet 库”,但它不输出未知标签。例如,如果它遇到“EXPORTASSETS”标签,它不
希望这不会被视为两次问同样的问题...... 所以我正在开发一个 Flash 网站(在 AS2 中),它有一个外部索引 swf,它使用 loadMovie("subfoo1.swf", placeTo
我在使用 Flash 和 Flex 时遇到了一个非常奇怪的问题。在某些情况下,如果同时加载了另一个 SWF,则在运行时(使用 Loader)加载的 SWF 中的影片剪辑似乎无法实例化。这是重现错误的程
当我创建暂时隐藏在选项卡中的 SWF 对象时,因此在某些浏览器(如 FireFox)中未完全加载,我似乎无法找到方法来确定 SWF 是否已加载,因此我可以与它。 /* Generate SWF (on
我加载了一个外部 SWF。 外部 SWF 有一个嵌入的 DisplayObject (getChildAt(0)) 我得到了它的 Class 实例以下代码: public function g
这是一个更一般的问题,而不是“帮助修复代码”问题: 目标 父 swf a.swf 加载外部子 b.swf 子 swf 有跟踪语句:[timestamp][log level][class] msg 父
我想在显示swf文件的webview中显示另一个swf文件,并且我可以获取显示swf文件的路径,但是当我将另一个swf文件拖放到显示swf文件的webview时,swf文件无法获取打不开,为什么?以及
目标:无需 www.macromedia.com/support/documentation/上的任何特殊权限,即可从本地协议(protocol)(widget://、file://、chrome-e
我正在尝试通过 CSS(绝对定位)将透明 PNG 定位在 SWF 影片上。但是,当我将 PNG 直接放在 SWF 上时,SWF 上的所有单击操作似乎都被禁用了。 SWF 要求使用您的网络摄像头,但您无
我想知道是否有人知道以编程方式创建 Flash swf 文件的任何库。 或者用于从 svg 创建 swf。 最佳答案 这听起来对 swfmill 来说是一份完美的工作我想您会发现它可以让您同时执行两种
我有一个加载其他几个 swf 的主要“父” swf。如果主 swf 发生了什么事,我需要告诉其中一个子 swf。 反过来,这似乎效果很好。任何 child 都可以简单地 dispatchEvent()
概览: 我有一个 SWF 横幅广告模板,它从我开发的平台加载 JSON,然后循环浏览该 JSON 中指定的一些产品。每个产品都由您的标准标题、价格和图像组成。 在平台上,用户可以通过一些 UI 工具(
我一直在努力让 AS2 swf 在 AS3 swf 中正确加载 - 但没有成功... AS2 文件(这是一个相当大的应用程序,引用许多外部 xml 文件等)在 Flash Player 中启动时可以完
我正在尝试做这样的事情:拿一个 swf 文件损坏它,然后..在设备内部再次将其可读(未损坏)...我将使用我自己编写的设备指纹检查该设备是否可以恢复 swf.. 得到? 我可以这样做吗?有什么办法呢?
我需要从一些 swf 文件中提取所有文本。我使用 Java 是因为我有很多用这种语言开发的模块。因此,我在 Web 上搜索了所有专门用于处理 SWF 文件的免费 Java 库。最后,我找到了Stuar
我认为这个问题不言自明。以前有人这样做过吗? 更新:澄清我为什么需要这样做。我们有一个 AS1 - AS2 站点的单一 swf 庞然大物,带有大型视频库部分。客户想要更新视频部分,因为 AS2 代码无
有没有人成功使用过 [Flagstone Software][1] 的 Transform SWF for Java 库 [1]: http://www.flagstonesoftware.com/t
例如,隐藏一个简单的 youtube 嵌入 document.getElementById('youtube').style.display = 'block'; document.getElemen
我是一名优秀的程序员,十分优秀!