1

私はそれを調べましたが、ほとんどの情報はシングルトンクラスの作成に関するものです。menuscreen.m から helloworldlayer.m に 1 つの値を渡したいだけです。これを行う簡単な方法は何ですか。

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

    testscene.number = 1;

    [[CCDirector sharedDirector] replaceScene:testscene];
}

私が試した方法の1つはこのようなものですが、これもうまくいきません。

シーン内の変数にアクセスして変更する方法を教えてください。

4

2 に答える 2

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];
}
于 2013-03-14T07:47:32.217 に答える
1

このためのextern変数を作成し、あなたがやっているようにします。

于 2013-03-14T07:25:51.447 に答える