Cocos2D从场景层init调用对象init

时间:2012-03-04 12:50:51

标签: iphone cocos2d-iphone

您好我正在开发一款iPhone游戏,自上而下的策略角色扮演游戏(有点像Fire Emblem),我设置了我的平铺地图,并在屏幕上设置并绘制了一些角色和敌人并四处走动。我的问题只是为了帮助我理解如何初始化我的角色。我的角色init很简单,它只是加载动画并设置统计数据:

// Hero Class

-(id)init
{
    if(self = [super init])
    {
        characterClass = kHeroClass;

        [self initAnimations];

        [self declarePlayer:Hero withLevel:1 withStrength:15 withDefence:14 withMindpower:15 withSpeed:26 withAgility:26 withLuck:12 withEndurance:10 withIntelligence:15 withElement:kFire withStatus:kStatusNormal];
    }

    return self;
}

等在游戏场景中,我可以像:

(在.h文件中)

PlayerCharacter *mainChar;
@property(retain)PlayerCharacter *mainChar;

(在.m文件中)

-(id) init
{
    if((self=[super init]))
    {
        //the usual stuff
        mainChar = [MainCharacter init];

        return self;

    }
}

但是,我在网上和教程中看过人们使用

MainCharacter *mainChar = [MainCharacter alloc];

相同
mainChar = [MainCharacter init];

如果没有,有人可以帮助澄清使用哪种语法。非常感谢:D祝你有美好的一天!

1 个答案:

答案 0 :(得分:1)

我认为您应该考虑通过一些介绍教程快速阅读。这个很棒,会让你习惯Objective-C的语法和语义:

http://cocoadevcentral.com/d/learn_objectivec/

alloc将为对象分配内存,init将像常规构造函数一样进行设置。您还将看到initWith...样式函数,它们也可以像这样使用:

MyObjectClass *instance = [[MyObjectClass alloc] init];

然后需要在dealloc方法中创建的同一个类中释放它。

至于设置对象,最好不要使用很长的方法名declarePlayer:Hero withLevel...,而是:

设置对象,然后更改属性:

Player *player = [[Player alloc] init];
player.health = 10;
player.armor = 20;
...

一旦您熟悉Objective-C作为一种语言,添加cocos2d和任何其他代码将更容易。为此,您可以访问programming guide并查找网络上的教程,例如www.learn-cocos2d.com