2015-10-15 28 views
1

我需要在應用程序退出前運行一些清理和拆卸代碼。cocos2d-x?

我已經寫過我的onExit函數,我將在調用Director :: end之前調用它。但是,當用戶通過關閉窗口退出應用程序時,我需要使用此回調。

據我所知,cocos2d :: Application和cocos2d :: ApplicationProtocol都沒有定義任何類型的退出或退出虛擬方法,它可以被覆蓋。

+1

您可以將清理放入持有狀態的類的析構函數中。只要它被破壞,你的代碼就會被執行。替代品正在使用'std :: atexit'。 – Petesh

回答

0

你可以在實現(void)applicationWillTerminate:(UIApplication *)application AppController.mm,如果它不是已經在你的科科斯項目實施(在我cocos2d_tests.xcodeproj它已經是),並從那裏打電話給你onExit功能。

喜歡的東西:

- (void)applicationWillTerminate:(UIApplication *)application { 
    // call onExit() here, or forward the call to call onExit() :) 
} 

注意:這僅適用於iOS。據我所知,對於Android而言,並不等同於applicationWillTerminate

+0

我看到它在AppController.mm中定義。我不熟悉將Objective-C和C++粘合在一起。我猜它使用反射來查看你的Application類是否有applicationWillTerminate方法;它沒有在任何C++中定義。 – stands2reason

+1

你可以在應用程序中調用任何函數,如下所示:'Application :: GetInstance() - > foo()'在'Application'中實現'foo()'後。您可以在.mm文件中調用C++代碼。 –