COCOS 2D iPhone - 场景之间解析变量并在图层中使用

Posted

技术标签:

【中文标题】COCOS 2D iPhone - 场景之间解析变量并在图层中使用【英文标题】:COCOS 2D iPhone - Parsing variable between scenes and using in layer 【发布时间】:2013-05-30 13:49:19 【问题描述】:

我有用变量调用新场景的代码:

    [[CCDirector sharedDirector] replaceScene:[GameScene sceneWithParam:item.tag]];

在 GameScene.h 中

@interface GameScene : CCLayer 




+(id) sceneWithParam:(int)nvl;
@end

GameScene.m

+(id) sceneWithParam:(int)nvl

    CCScene *scene = [CCScene node];

    GameScene *layer = [GameScene node];

    [scene addChild: layer];

    return scene;




-(id) init


    if( (self=[super init] )) 



    
    return self;

我不能在if( (self=[super init] )) 中使用变量nil 我已经尝试设置属性testtest = nvl; inside +(id) sceneWithParam:(int)nvl;,但这是不可能的。

【问题讨论】:

【参考方案1】:

是的,不能在静态方法中使用动态参数。如果你想用参数创建你的对象,你必须创建一个 init 方法,接收你需要的参数。例如:

-(id) initWithYourParam:(id)param

    if ( (self=[self init]) ) 
        self.propertyParam = param;
    
    return self;

【讨论】:

但是如何使用层中的参数 (if( (self=[super init] )) ) ? 找到代码调用你的init方法的地方,我猜它是[GameScene node];。现在您的派生类中没有此方法,因此它需要父类的方法。您需要在您的 GameScene 类中实现 node (或任何调用 GameScene 的 init 的方法)并使其调用 initWithParam 而不是随意 初始化 它有效。我使用了 [[GameScene alloc] initWithParam:nvl]。非常感谢。

以上是关于COCOS 2D iPhone - 场景之间解析变量并在图层中使用的主要内容,如果未能解决你的问题,请参考以下文章

当用户第二次打开 cocos2d-iphone 时,如何更改第一个场景?

一段时间后 cocos2d 代码变慢

如何以图形方式开发一些 ViewController,然后从 Cocos2d Iphone 2 场景中调用它们?

cocos2d 1.0 beta 两个场景之间的过渡和程序刚刚退出?

使用 NSUserDefaults 保存/加载数据 (cocos2d iphone)

什么大致类似于 iOS-UIKit 中的 cocos2D 场景?