0

我是 cocos2d 的新手并且一般都在开发,所以这可能是一个非常愚蠢的错误。我到处搜索并比较了示例,但我看不到问题所在。我有一个简单的菜单,只有一个播放按钮。当它点击时,我试图去另一个场景。错误是

使用未声明的标识符“gameScene”

但据我所见,它被宣布...

这是我的代码。

CCMenuItemImage *play = [CCMenuItemImage
                             itemFromNormalImage:@"PlayButton.png"
                             selectedImage:@"PlayButtonPressed.png"
                             target:self
                             selector:@selector(gameScene)];

    CCMenu *selectMenu = [CCMenu menuWithItems:play, nil];
    //[selectMenu alignItemsVertically];
    [self addChild:selectMenu];

    -(void)gameScene:(id)sender
    {
        [[CCDirector shareDirector] replaceScene:GameScene node];
    }

谢谢你的帮助

编辑:我现在没有错误,我错过了 GameScene 节点周围的 []。但它一直在崩溃。这是我的新代码。

CCMenuItemImage *play = [CCMenuItemImage
                                 itemFromNormalImage:@"PlayButton.png"
                                 selectedImage:@"PlayButtonPressed.png"
                                 target:self
                                 selector:@selector(playGame)];

        CCMenu *selectMenu = [CCMenu menuWithItems:play, nil];
        //[selectMenu alignItemsVertically];
        selectMenu.position = ccp(160, 300);
        [self addChild:selectMenu];

    }
    return self;
}

-(void)playGame:(id)sender{
    [[CCDirector sharedDirector]replaceScene:[GameScene node]];
}

它似乎没有到达 CCMenu?

4

3 回答 3

0

您的替换场景参数不正确。您必须定义一个它将切换到的实际场景,而不仅仅是一个空节点。

于 2012-09-23T01:59:53.773 回答
0

我解决了这个问题。这似乎是选择器的问题。我只是将其更改为:

CCMenuItemImage *play = [CCMenuItemImage
itemFromNormalImage:@"PlayButton.png"
selectedImage:@"PlayButtonPressed.png"
target:self
selector:@selector(playGame)];

到:

CCMenuItemImage *play = [CCMenuItemImage
itemFromNormalImage:@"PlayButton.png"
selectedImage:@"PlayButtonPressed.png"
target:self
selector:@selector(playGame:)];
于 2012-09-23T12:49:18.917 回答
0

我一直想念这些。在你的计时器中也要注意这一点,我已经花了几个小时来追踪由 [self schedule:@selector(gameLogic)]; 导致的错误。任何时候你有一个选择器,无论是在计时器、菜单还是其他任何地方,你都需要把它放进去传递数据。

此外,如果您想在不按下按钮的情况下进行虚假菜单调用,也许是为了强制它调用计时器或其他东西,这是一个我发现有用的 hacky 解决方案:

id fakeButton;
[self playGame:fakeButton];
于 2013-05-27T23:20:21.057 回答