首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在制作iphone应用程序时,是否可以嵌入或加载主权财富基金(这是苹果允许的)

在制作iphone应用程序时,是否可以嵌入或加载主权财富基金(这是苹果允许的)
EN

Stack Overflow用户
提问于 2011-12-31 14:28:03
回答 3查看 6.2K关注 0票数 4

在为iphone开发应用程序时,我有点困惑是要嵌入主权财富基金,还是要加载它们。有谁知道这两种方法的优点(哪一种比使用更好)?我知道嵌入主权财富基金应该比加载它们快一点,但仅此而已吗?

而且这也是很重要的,我读到苹果会拒绝任何有外部主权财富基金的应用?这真的对吗?如果是这样的话,嵌入或加载所说的主权财富基金会解决这个问题吗?

提前感谢

编辑:在搜索了一段时间后,发现苹果在加载外部主权财富基金时确实有问题,你仍然可以这么做,但你的主权财富基金不需要附加任何actionscript,这里有一个链接http://whizzkid74.blogspot.com/2010/12/air-for-iphone-loading-external-swf.html --它没有提到嵌入swfs的任何内容,所以我的问题是:在iphone上编写应用程序时,你能嵌入swfs吗?

编辑以澄清,当我说外部主权财富基金时。我指的是在本地系统上发现的SWF,但是您需要将它们添加到程序中,因为它们包含MovieClips或Sprite等.你需要的。我不是指你需要从一个网站或在线来源下载的主权财富基金。(希望能澄清事情)

编辑改变了问题的title...Problem解决了,感谢大家的帮助和新年快乐=D

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-01 21:21:48

答案是肯定的,你可以嵌入主权财富基金,但这不是唯一的方法。您还可以使用普通的Loader方法,与主SWF相关的所有内容:

代码语言:javascript
复制
var myLoader:Loader = new Loader();
// iOS apps act as if the main SWF is in a folder 
// and the other SWFs are in the same (or sub) folders. 
var url:URLRequest = new URLRequest("loadedSWF.swf");
myLoader.load(url);
addChild(myLoader);
myLoader.x = 50;
myLoader.y = 30;

请注意:在编译期间(在"Air for iOS设置“中,在”包含的文件“列表中),您必须列出要加载的SWF,它们将被编译到IPA中。

因此,不能调用外部SWF,但是您当然可以使用embed标记访问其他SWF,或者使用(可能称为) IPA。

编辑:

自从我第一次回答这个问题以来,问题和标题都发生了一些变化,下面是一个更一般的总结。苹果不允许像在网站上使用Flash那样加载本地主权财富基金。除非将内容编译到应用程序中,否则无法使用i设备中的“相对”或“本地”引用加载SWF (或其他任何东西)。这不适用于某些类型的“远程”SWF加载,也不适用于Actionscript“本机”编码,但这不是(最初的)问题。

票数 2
EN

Stack Overflow用户

发布于 2012-01-18 19:35:49

更新,2012年10月:

在Adobe 3.5中,adl引入了一个名为“多重SWF支持”的特性,允许使用加载器加载在.ipa (本地文件,而不是服务器)中交付的SWF,以便在其中包含代码。adl编译器AOT编译.ipa中包含的SWF,允许加载它们并在iOS下工作。

AIR 3.5在撰写本文时正处于测试阶段,可在adobe实验室网站上获得:

  • AIR 3.5在Adobe网站上
  • AIR 3.5释放说明

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

旧的答案:

我想更新这个答案,因为自从我第一次研究这个问题以来,我已经学到了很多。

问题的根源在于,当使用AIR制作iOS应用程序时,Apple不允许运行时对代码进行解释--这包括SWF字节码。因此,加载包含代码的SWF(即使是停止()、gotoAndPlay()等简单的动画命令)也是不允许的,并且不会通过加载器(在Air3.5之前)工作。

  • 请注意,为其矢量图形内容加载SWF是非常好的。图形将显示,但代码不会执行。

然而,有一些解决办法。这两种解决方案都可以通过将包含代码的资产编译到主SWF中来避免加载程序,因为一旦它们成为主SWF的一部分,AIR编译器(adt)就会将代码交叉编译成objective,并且在iOS设备上一切都会正常工作。

使用SWC库的

这是iOS开发的最佳选择。如果您将图形资产(.fla文件)编译成SWCs (或从库中的符号导出SWCs ),然后针对这些SWCs编译主swf,这将通过编译器和actionscript代码在iOS设备上执行。

在嵌入式主权财富基金中的应用

将资产嵌入主权财富基金非常容易,如下所示:

代码语言:javascript
复制
[Embed(source="GameLevel.swf")]
  private var GameLevel:Class;

public function main():void
{
  var my_level:* = new GameLevel();
  addChild(my_level);
}

在这个场景中,如果gameLevel.swf中有代码,它通常不会在iOS中工作,因为新的gameLevel()会创建一个Loader并解释SWF。但是,如果您首先通过我的工具SWFMerge运行上述SWF,它将使用您的嵌入式SWF并将其合并到您的根SWF中。然后,ADT将您的主要swf (包括嵌入式代码)编译到objective中,它将在iOS上工作,并注意:新的gameLevel()现在直接生成资产的实例,而不是加载程序。

SWFMerge工具在这里:

alpha.swf

在评论中让我知道这个解决办法是否适合你,或者你是否有麻烦。

使用装载机的

在AIR 3.5之前,如果您使用Loader加载SWF文件(无论此swf是包含在您的IPA中还是从TOS服务器中提供),目标SWF图形将加载得很好,但是SWF中的代码不会执行,这同样是因为苹果的TOS不允许这样做。

从AIR 3.5开始,使用Loader将SWF文件打包为资产,即使它们包含代码,因为这段代码现在是由adt编译的。这需要- application =18或更高的根SWF (不一定是资产)和AIR名称空间,在应用程序xml文件中以3.5结尾。

然而,从技术上讲,解释SWF字节码是可能的,这只是App的一项法律限制。如果您只想在iOS设备上进行测试,并且不会通过app分发应用程序,则可以使用adt的-target ipa-test-interpreter选项编译SWF,并在其中加载包含代码的SWF。

票数 7
EN

Stack Overflow用户

发布于 2011-12-31 16:10:51

我不熟悉苹果和iPhone应用程序的规则,但一般来说,当我制作应用程序/游戏时,我会嵌入所有的东西。优点:

  • 您的游戏/应用程序在一个swf中,使其易于共享。
  • 您的游戏/应用程序加载速度更快,因为所有资产在加载时都在那里。
  • 你不依赖于互联网来获取你的资产(如果你是从一个网站加载的话)
  • 您的游戏/应用程序将“只是工作”-没有安全问题,没有问题,网址的变化/资产网站的下降(如果他们是外部的)
  • 如果您使用swc而不是swf ( swc也可以加载),那么您也可以从严格输入中获益。

缺点:

  • 如果您需要更新您的资产,则需要重新发布游戏/应用程序。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8688645

复制
相关文章

相似问题

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