2013-04-16 41 views
38

對於客戶端,我開發了一個iOS + Android應用程序,使用Cordova (PhoneGap)作爲用戶界面。現在,作爲此應用的更新,我正在嘗試添加一個寫在Haxe中的遊戲。最初這個遊戲是爲Flash target編寫的,但我已經更新它與C++目標Android and iOS一起工作。從iOS應用程序運行Haxe -hxRunLibrary()錯誤

在Android上,很容易使用活動(Haxe部分作爲單獨的活動運行)將其與Cordova應用程序集成,但在iOS上實現類似結果時遇到了一些問題。

到目前爲止,我已經嘗試在自己的項目全部hxcpp生成的代碼(在相同的方式,NME樹立XCode項目,當你「NME打造IOS」),而我從我的代碼時調用hxRunLibrary()我想讓遊戲運行。

的問題是,hxRunLibrary()似乎想打造自己的UIApplication實例,它失敗,出現以下錯誤,因爲我主要的應用程序已經在運行一個實例:

*** 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.' 

我認爲它可能有一些使用Haxe用於圖形的SDL。根據我的理解,SDL需要從應用程序的主要功能運行,該應用程序與Cocoa產生了衝突,該功能也需要從主函數運行。

有沒有簡單的解決方法呢?我查看了hxcpp資源,但無法找到UIApplication相關代碼或SDL的任何入口代碼。

也許有人可以指出我正確的方向。謝謝!

回答

3

那麼,我搜索了一些關於Haxe的信息。我所理解的是,Haxe會爲你制定一份完整的申請表,這意味着它包括主要功能。這就是錯誤發生的原因。

而且您可以通過調用UIApplicationMain函數兩次來模擬問題。

在我看來,你必須從Haxe產生的源代碼文件中移除關於UIApplicationMain的代碼。