У меня есть приложение, которое содержит несколько игр. На главном экране приложения у вас есть значки, и каждый значок запускает игру, загружая 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 swf игр с Box2D A.swf, B.swf и C.swf. Если я запускаю первый A.swf, он работает, и B и C тоже работают. Если я запускаю первый C.swf, приложение зависает с ошибкой.
Я знаю, что компиляция на iOS отличается, поскольку все swf перепутаны (что-то в этом роде), но любая помощь приветствуется, спасибо!





Через несколько часов я нашел решение, используя 1 экземпляр b2World для всего swf, а не 1 экземпляр swf. Сейчас конфликта нет, я думаю, что все экземпляры b2World находятся на одном уровне в iOS ... Я оставляю это здесь для всех, у кого есть такая же проблема.
IIRC, использующий более одного SWF, требует особых мер предосторожности, чтобы ссылаться на объекты из других SWF и приводить их типы. Я не помню подробностей, так как я никогда не использовал более одного SWF, извините.