2.2.4 类
HelloWorld项目的核心由两个重要的类构成。HelloWorldAppDelegate类用于处理应用程序中的全局事件和状态变化,而HelloWorldScene类则包含了所有用于显示“Hello World”标签的代码。
1.HelloWorldAppDelegate类
每个iOS应用程序都有一个实现UIApplicationDelegate协议的AppDelegate类。在我们的HelloWorld项目中,用于实现协议的类叫做HelloWorldAppDelegate,这种命名模式对于任意一个新项目都是通用的:项目名+AppDelegate。从现在起,我会将HelloWorldAppDelegate简称为AppDelegate,因为这是在每个iOS应用程序中都存在的通用概念。
AppDelegate类通过在特定时间点从iOS接收消息来追踪应用程序的状态变化。例如,你可以通过它来处理诸如用户接到来电或内存不足时应用程序需要采取的措施。应用程序会收到的第一个消息会是applicationDidFinishLaunching方法,这是所有代码的起始位置,开发者应该在该方法中添加cocos2d的所有初始化代码。
欲知AppDelegate中更多不同的方法、对应的功能以及消息发送时间的相关内容,请查阅苹果公司官方关于UIApplicationDelegate协议的参考文档http://developer.apple.com/ iphone/library/documentation/uikit/reference/UIApplicationDelegate_Protocol。
注意:
鉴于刚刚提到的应用程序的启动问题,我想应该再提一下应用程序的关闭问题。你最终可能对AppDelegate中的dealloc方法心存疑惑:它从没被调用过!而且任何设置在AppDelegate的dealloc方法中的断点也完全不起作用!事实上,当iOS终止一个应用程序时,它会将应用程序占用的所
所有内存清理干净,从而加快应用程序的关闭速度。这也是为什么AppDelegat的dealloc方法内中的代码从不被运行的原因。此外,手动调用dealloc方法是一个很不好的习惯。如果需要在应用程序终止前运行一些代码,可以将这些代码添加到applicationWillTerminate方法中。如果你的目标系统是iOS 4或更高版本,就应将代码添加到applicationDidEnterBackground方法中。
在多数情况下,在cocos2d初始化过程中只有3处代码需要进行修改:
[[CCDirector sharedDirector]
setDeviceOrientation:CCDeviceOrientationLandscapeLeft];
[[CCDirector sharedDirector] setAnimationInterval:1.0/60];
[[CCDirector sharedDirector] setDisplayFPS:YES];
下面我将对它们逐个地加以解释。