4

cocos2d 2.0 でシーンをプッシュして、このプッシュされたシーンにパラメータを渡す方法があるかどうか知りたいです。たとえば、シーンをプッシュするには、これを使用することを知っています。

[[CCDirector sharedDirector] pushScene:[HelloWorldLayer scene]];

これは単純なレイヤーである helloworldlayer をプッシュします。

// HelloWorldLayer
@interface HelloWorldLayer : CCLayer
{
}

// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;

@end

しかし、このレイヤーにいくつかのパラメーターを渡したいので、レイヤーがプッシュされたときに、渡したパラメーターを使用できます。

どうすればできますか?

4

4 に答える 4

5

+(CCScene *) sceneWithParameter:(ParameterType)parameter;代わりに次のようなことができます+(CCScene *) scene;

于 2012-07-20T13:30:47.593 に答える
4

最初に、次のようにパラメーターで呼び出すメソッドを作成する必要があります

HelloWorldLayer.h

@interface HelloWorldLayer : CCLayer
{
}
+(CCScene *)sceneWithParam:(id)parameter;

@end

HelloWorldLayer.m

@implementation HelloWorldLayer

+(CCScene *)sceneWithParam:(id)parameter
{
    [[parameter retain]doSomething];
    CCScene * scene = [CCScene node];
    HelloWorldLayer *layer = [HelloWorldLayer node];
    [scene addChild: layer];
    return scene;
}

-(id) init
{
    if(self = [super init])
    {

    }
    return [super init];
}

// All your methods goes here as usual

@end

次に、呼び出してプッシュします

[[CCDirector sharedDirector] pushScene:[HelloWorldLayer sceneWithParam:obj]];

レイヤー内にパラメーターが必要な場合は、レイヤーに対して同じことを行う必要があります。メソッドを使用して initmethod を作成し、それを sceneWithParam: メソッドのレイヤーにさらに渡します。

于 2012-07-20T14:00:06.560 に答える
0

グローバル変数または外部オブジェクト(「プッシャー」およびHelloWorldLayer.からアクセス可能)を介して実行します。またはuserDataHelloWorldLayer.

于 2012-07-20T13:19:20.763 に答える