2.2.4 類
HelloWorld項目的核心由兩個重要的類構(gòu)成。HelloWorldAppDelegate類用于處理應用程序中的全局事件和狀態(tài)變化,而HelloWorldScene類則包含了所有用于顯示“Hello World”標簽的代碼。
1.HelloWorldAppDelegate類
每個iOS應用程序都有一個實現(xiàn)UIApplicationDelegate協(xié)議的AppDelegate類。在我們的HelloWorld項目中,用于實現(xiàn)協(xié)議的類叫做HelloWorldAppDelegate,這種命名模式對于任意一個新項目都是通用的:項目名+AppDelegate。從現(xiàn)在起,我會將HelloWorldAppDelegate簡稱為AppDelegate,因為這是在每個iOS應用程序中都存在的通用概念。
AppDelegate類通過在特定時間點從iOS接收消息來追蹤應用程序的狀態(tài)變化。例如,你可以通過它來處理諸如用戶接到來電或內(nèi)存不足時應用程序需要采取的措施。應用程序會收到的第一個消息會是applicationDidFinishLaunching方法,這是所有代碼的起始位置,開發(fā)者應該在該方法中添加cocos2d的所有初始化代碼。
欲知AppDelegate中更多不同的方法、對應的功能以及消息發(fā)送時間的相關(guān)內(nèi)容,請查閱蘋果公司官方關(guān)于UIApplicationDelegate協(xié)議的參考文檔http://developer.apple.com/ iphone/library/documentation/uikit/reference/UIApplicationDelegate_Protocol。
注意:
鑒于剛剛提到的應用程序的啟動問題,我想應該再提一下應用程序的關(guān)閉問題。你最終可能對AppDelegate中的dealloc方法心存疑惑:它從沒被調(diào)用過!而且任何設(shè)置在AppDelegate的dealloc方法中的斷點也完全不起作用!事實上,當iOS終止一個應用程序時,它會將應用程序占用的所
所有內(nèi)存清理干凈,從而加快應用程序的關(guān)閉速度。這也是為什么AppDelegat的dealloc方法內(nèi)中的代碼從不被運行的原因。此外,手動調(diào)用dealloc方法是一個很不好的習慣。如果需要在應用程序終止前運行一些代碼,可以將這些代碼添加到applicationWillTerminate方法中。如果你的目標系統(tǒng)是iOS 4或更高版本,就應將代碼添加到applicationDidEnterBackground方法中。
在多數(shù)情況下,在cocos2d初始化過程中只有3處代碼需要進行修改:
[[CCDirector sharedDirector]
setDeviceOrientation:CCDeviceOrientationLandscapeLeft];
[[CCDirector sharedDirector] setAnimationInterval:1.0/60];
[[CCDirector sharedDirector] setDisplayFPS:YES];
下面我將對它們逐個地加以解釋。