cocos2d场景问题 - 在应用程序中调用init()的位置?

时间:2010-07-08 05:09:35

标签: cocos2d-iphone

我对cocos2d和Objective C完全不熟悉。我刚刚开始研究cocos2d包附带的HelloWorld示例,并且无法弄清楚应用程序中HelloWorldScene.m中的-init()函数被调用的位置。

以下是我关注的教程: http://www.bit-101.com/blog/?p=2123

提前致谢!

2 个答案:

答案 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()方法。当创建场景的实例时,它将在基类中被调用。通过覆盖它,您将有机会启动自己的代码。