【问题标题】:Air for iOS Box2D multiple swf conflictAir for iOS Box2D 多个 swf 冲突
【发布时间】:2018-12-06 12:16:13
【问题描述】:

我有一个应用程序,其中包含几个游戏的 swf。在应用程序的主屏幕上,您有图标,每个图标通过加载 swf 来启动游戏。

在 Android 和 Windows 上一切正常,但在 iOS 上与使用 Box2D 的游戏存在冲突(实际上我使用的是 QuickBox2D,Box2D 的快捷方式)。当我启动包含 Box2D 的游戏时,出现此错误:

TypeError: Error #1034: Type Coercion failed: cannot convert Box2D.Collision::b2ContactID@103666911 to Box2D.Collision.b2ContactID.
at Box2D.Collision::b2ContactID()
at Box2D.Collision::b2ContactPoint()
at Box2D.Dynamics::b2ContactManager$cinit()
at Box2D.Dynamics::b2ContactManager$cinit()
at global$init()
at global$init()
at Box2D.Dynamics::b2World()

奇怪的是,我发现如果我一开始游戏 swf 的名称按字母顺序排在第一位,它可以正常工作,其他所有游戏也可以正常工作。示例 我有 3 个带有 Box2D A.swf、B.swf 和 C.swf 的 swf 游戏。 如果我首先启动 A.swf 它可以工作,B 和 C 也可以工作。 如果我启动第一个 C.swf,应用程序会因错误而冻结。

我知道 iOS 上的编译是不同的,因为 swf 都混在一起了(类似的东西),但是感谢您的帮助!

【问题讨论】:

  • IIRC 使用多个 SWF 需要特殊的预防措施,以便从其他 SWF 引用和类型转换对象。我不记得细节了,因为我从来没有使用过一个以上的 SWF,抱歉。

标签: ios actionscript-3 air box2d


【解决方案1】:

几个小时后,我找到了一个解决方案,对所有 swf 使用 1 个 b2World 实例,而不是 swf 的 1 个实例。 现在没有冲突,我猜所有 b2World 实例在 iOS 中处于同一级别...... 我把它留在这里给遇到同样问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2013-03-02
    • 2012-07-18
    相关资源
    最近更新 更多