我对cocos2d和Objective C完全不熟悉。我刚刚开始研究cocos2d包附带的HelloWorld示例,并且无法弄清楚应用程序中HelloWorldScene.m中的-init()函数被调用的位置。
以下是我关注的教程: http://www.bit-101.com/blog/?p=2123
提前致谢!
答案 0 :(得分:5)
jtalarico是对的。我想稍微扩展他的答案。
通常,只要对象被实例化,就会按惯例调用某种形式的[init]。对于许多对象,只需要[init],但是某些对象具有更复杂的形式,例如[initWithSomething]。
在Cocos2d中,init函数通常由[node]方法调用,该方法通常用于在Cocos2d中构造对象。例如,查看CCNode.m,您将看到以下代码:
+(id) node
{
return [[[self alloc] init] autorelease];
}
其他对象有其他构造函数,但这是主要的例子。
因此,如果您继承CCNode,则可以覆盖[init]方法并在创建对象时执行自己的操作。请务必调用[super init],以便CCNode也可以进行自己的初始化。
答案 1 :(得分:1)
在场景中重写了init()方法。当创建场景的实例时,它将在基类中被调用。通过覆盖它,您将有机会启动自己的代码。