【问题标题】:Initialize Scene in cocos2d with Parameter使用参数初始化 cocos2d 中的场景
【发布时间】:2011-04-13 04:17:23
【问题描述】:

我正在尝试在 cocos2d(版本 0.99.5)中初始化一个场景,并想传入一个参数。在这种情况下,参数是与级别编号对应的int值。场景类本身是CCLayer的子类,我用节点类方法初始化它:

GameScene *scene = [GameScene node];  //GameScene subclass of CCLayer

我有一个自定义的init方法,它接受变量“level”,如下:

- (id) initWithGameLevel:(int)level {
    if ((self = [super init])){
        // etc 
    }
}

只是想知道:我创建自己的 initWithX 方法的方法是否偏离了基础,以及如何使用级别整数初始化场景?

【问题讨论】:

  • 建议 Jim 如果它是 CCLayer 的子类,那么你的类名应该是 GameLayer,因为 GameScene 看起来像 CCScene 的子类
  • 这是一个很好的建议。谢谢!

标签: ios objective-c cocos2d-iphone


【解决方案1】:

将此方法添加到您的子类中

+(id)nodeWithGameLevel:(int)level{
    return  [[[self alloc] initWithGameLevel:level] autorelease];
}

而不是

GameScene *scene = [GameScene node]; 

GameScene *scene = [GameScene nodeWithGameLevel:levelNumber];

【讨论】:

  • 这是一件美丽的事情。我意识到这是 Objective-C 中非常基本的东西。仍然不确定发生了什么,但这个答案对我来说是一个很好的面包屑。谢谢,Inder。
  • @JimMcGaw,Inder 正在使用预期的“节点”Cocos2d 约定添加一个类方法,但在指定和默认初始化程序之后进行模式化。为您的下一个“面包屑”... ;)
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2020-08-25
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多