我有使用变量调用新场景的代码:
[[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;
}
我无法在nil
内使用变量if( (self=[super init] )) {
我已经尝试设置属性test
和test = nvl; inside +(id) sceneWithParam:(int)nvl;
,但这是不可能的。
答案 0 :(得分:1)
是的,在静态方法中不可能使用动态参数。如果要使用参数创建对象,则必须创建 init 方法,接收所需的参数。 E.g:
-(id) initWithYourParam:(id)param
{
if ( (self=[self init]) ) {
self.propertyParam = param;
}
return self;
}