Pour un client, j'ai développé un iOS + Android
en utilisant Cordova (PhoneGap)
pour l'interface utilisateur. Maintenant, comme une mise à jour de cette application, je suis en train d'essayer d'ajouter un jeu qui a été écrit en Haxe. A l'origine, le jeu a été écrit pour le Flash target
mais je l'ai mis à jour pour qu'il fonctionne avec le système de gestion de l'information. C++
les cibles pour Android and iOS
.
Sur Android, il a été facile d'intégrer cette fonction à l'application Cordova
en utilisant des activités (la partie Haxe s'exécute en tant qu'activité séparée), mais j'ai du mal à obtenir un résultat similaire sur iOS.
Jusqu'à présent, j'ai essayé d'inclure tous les hxcpp
dans mon projet (de la même manière que NME configure le projet XCode lorsque vous faites "nme build ios"), et j'appelle hxRunLibrary()
de mon code quand je veux que le jeu s'exécute.
Le problème est que hxRunLibrary()
semble vouloir créer son propre UIApplication
qui échoue avec l'erreur suivante, puisque mon application principale exécute déjà une instance :
*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Je pense que cela pourrait avoir quelque chose à voir avec SDL, que Haxe utilise pour les graphiques. D'après ce que j'ai compris, SDL doit être exécuté à partir de la fonction principale de l'application, ce qui crée un conflit avec Cocoa qui doit également être exécuté à partir de la fonction principale.
Existe-t-il un moyen simple de contourner ce problème ? J'ai regardé dans les sources de hxcpp, mais je n'ai pas pu trouver la fonction UIApplication
ou tout autre code d'entrée pour SDL.
Peut-être quelqu'un pourrait-il m'indiquer la bonne direction. Merci.