将值从一个场景传递到另一个场景

时间:2013-03-14 07:21:04

标签: iphone objective-c cocos2d-iphone

我查了一下,大部分信息都是关于制作单身课程。我只想从menucreen.m向我的helloworldlayer.m传递一个值。这样做的简单方法是什么。

- (void) changeScenePlay
{
   CCScene *testscene = [HelloWorldLayer scene];

    testscene.number = 1;

    [[CCDirector sharedDirector] replaceScene:testscene];
}

我尝试过的方法之一就是这样,但这对我来说也不起作用。

如何访问场景中的变量并进行更改。

2 个答案:

答案 0 :(得分:1)

为此创建外部变量并按照您的方式执行。

答案 1 :(得分:1)

在HelloWorld图层类中使用变量成员。

    @interface HelloWorldLayer: CCLayer
    {
         int number;
    }
    @property(nonautomatic, assign) int number;
    @end

    @implementation HelloWorldLayer
    @synthesize number;

   +(CCScene *) sceneWithNumber:(int)inNumber
    {
        CCScene *scene = [CCScene node];

         HelloWorldLayer *layer = [[[HelloWorldLayer  alloc] initWithId:inNumber] autorelease];

        [scene addChild: layer z:Z_SCENE tag:TAG_SCENE];

        return scene;
    }

-(id) initWithId:(int)inNumber
{
    if( (self=[super init])) {
        self.number= inNumber;
    }
    return self;
}

    @end 

调用sceneWithNumber而不是场景

- (void) changeScenePlay
{
    CCScene *testscene = [HelloWorldLayer sceneWithNumber:1];
    [[CCDirector sharedDirector] replaceScene:testscene];
}