首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CCScene中设置CCLayer的属性

在CCScene中设置CCLayer的属性
EN

Stack Overflow用户
提问于 2012-03-29 10:25:00
回答 1查看 538关注 0票数 0

我正在用Cocos2d 2.0fc0开发一个带有Xcode的游戏,但是我挂了。我希望在加载CCLayer/CCScene Game类时设置BOOL属性,以定义第二个玩家是本地玩家还是远程(游戏中心)玩家。问题是我不太确定在这种情况下该怎么做。这是我到目前为止所得到的:

代码语言:javascript
复制
@interface RemoteGame : CCLayer <GameCenterControllerDelegate> {
BOOL isRemote;
}

@property (assign, readwrite) BOOL isRemote;

+(CCScene *) sceneIsRemote: (BOOL) b;

-

代码语言:javascript
复制
@implementation RemoteGame

@synthesize isRemote;

+(CCScene *) sceneIsRemote: (BOOL) b {
CCScene *scene = [CCScene node];

    RemoteGame *layer = [RemoteGame node];
    layer.isRemote = b;
    [scene addChild: layer];

    return scene;
}


-(id) init {
    if((self=[super init])) {
        if (isRemote) {
            [GameCenterController sharedController].delegate = self;
        }
    }
}

然后,我像这样加载场景:

代码语言:javascript
复制
CCScene *trans = [CCTransitionFlipX transitionWithDuration:.75 scene:[RemoteGame sceneIsRemote: YES]];
[[CCDirector sharedDirector] replaceScene:trans];
[self presentGCTurnViewController];

场景加载正常,但BOOL设置不正确。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 14:12:08

在所示代码中,在layer.isRemote = b;之前调用[RemoteGame init]

[RemoteGame node]在内部调用init方法,init检查isRemote标志(默认情况下设置为NO。当委派完成时,您调用layer.isRemote = b;,但这并没有设置init。因此,您需要将[GameCenterController sharedController].delegate = self;移到setIsRemote setter中。

通常,您可以使用调试器中的“监视变量”命令轻松地检查何时设置了isRemote标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9918304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档