2012-07-11 23 views
1

我有这个的Cocos2D 2.0 - 编程选择CCMenuItem/CCMenuItemToggle

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]; 

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

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

谢谢。

回答

8

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

[m_stopPlayToggle setSelectedIndex:0]; 

m_stopPlayToggle.selectedIndex = 0; 

将设置你的播放按钮为活动状态。

+0

perrrrrrrrrrrfect !!!!!!!!!!!!!谢谢! – SpaceDog 2012-07-11 17:34:42

+0

不用客气=) – Morion 2012-07-11 17:41:32

0

从的Cocos2D-X 3.0,到MenuItemToggle的API的变化,使用是这样的:

//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