Cocos2D 2.0 - 以编程方式选择CCMenuItem / CCMenuItemToggle

时间:2012-07-11 16:45:03

标签: cocos2d-iphone

我有这个

    CCMenuItem *play =
    [CCMenuItemSprite itemWithNormalSprite:[CCSprite spriteWithSpriteFrameName:@"play.png"]
                            selectedSprite:[CCSprite spriteWithSpriteFrameName:@"stop.png"]];

    CCMenuItem *stop =
    [CCMenuItemSprite itemWithNormalSprite:[CCSprite spriteWithSpriteFrameName:@"stop.png"]
                            selectedSprite:[CCSprite spriteWithSpriteFrameName:@"play.png"]];


    CCMenuItemToggle *stopPlayButton = 
    [CCMenuItemToggle itemWithTarget:self 
                            selector:@selector(togglePlayStop:)
                               items:Play, botaoStop, nil];


    CCMenu *togglePlayStop = [CCMenu menuWithItems:stopPlayButton, nil];

这是一个播放/停止按钮。它通常显示播放图像。用户点击按钮,电影播放和按钮切换以显示停止图像,因此用户可以停止播放电影。电影到了终点。该应用程序停止播放电影。现在我必须切换按钮上的图像,再次显示播放图像。

如何以编程方式“点按”按钮?

感谢。

2 个答案:

答案 0 :(得分:8)

CCMenuItemToggle实例具有属性selectedIndex。你可以读写它。在您的情况下,索引0处的项目将是您的播放按钮,索引1处的项目将是您的停止按钮。因此,在界面中声明切换是完全的,然后只需更改selectedIndex属性即可。两个

[m_stopPlayToggle setSelectedIndex:0];

m_stopPlayToggle.selectedIndex = 0;

将播放按钮设置为有效。

答案 1 :(得分:0)

从Cocos2d-x 3.0开始,API更改为 MenuItemToggle ,用法如下:

//in SomeLayer init()
auto onItem = MenuItemImage::create(...);
auto offItem = MenuItemImage::create(...);
auto aToggle= MenuItemToggle::createWithCallback(CC_CALLBACK_1(SomeLayer::onAToggle, this), 
                                                                    onItem, //0th
                                                                    offItem, //1st
                                                                    NULL);
aToggle->setSelectedIndex(getSomeBoolValueForThisToggle()?0:1); //true to show 0th, false 1st