1

我查了一下,大部分信息都是关于制作单例类的。我只想从 menuscreen.m 向我的 helloworldlayer.m 传递一个值。有什么简单的方法可以做到这一点。

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

    testscene.number = 1;

    [[CCDirector sharedDirector] replaceScene:testscene];
}

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

我如何访问场景中的变量并更改它。

4

2 回答 2

1

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

于 2013-03-14T07:25:51.447 回答
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而不是scene

- (void) changeScenePlay
{
    CCScene *testscene = [HelloWorldLayer sceneWithNumber:1];
    [[CCDirector sharedDirector] replaceScene:testscene];
}
于 2013-03-14T07:47:32.217 回答