【问题标题】:Holding a CCMenuItemImage/CCMenu button for 3 seconds to trigger an action按住 CCMenuItemImage/CCMenu 按钮 3 秒以触发操作
【发布时间】:2025-12-30 09:20:08
【问题描述】:

我想在我的应用程序的一些 cocos2d 按钮上做一个按住动作,以便按住它们 3 秒钟,然后显示它会带来的东西。例如:

CCMenuItemImage * menuBtnSettings = [CCMenuItemImage
                                         itemWithNormalSprite:[CCSprite spriteWithSpriteFrameName:@"settingsButton_over"]
                                         selectedSprite:[CCSprite spriteWithSpriteFrameName:@"settingsButton_down"]
                                         disabledSprite:[CCSprite spriteWithSpriteFrameName:@"settingsButton_over"]
                                         target:self
                                         selector:@selector(showSettings)];

    [menu addChild:menuBtnSettings z:3 tag:20];
    [menuItemsArray addObject:menuBtnSettings];

有没有办法在不影响整个应用程序的情况下做到这一点?因为只有三个按钮会有这种特殊的动作。

谢谢!

【问题讨论】:

    标签: iphone ios ipad cocos2d-iphone


    【解决方案1】:

    您可以继承 CCMenuItemImage 并覆盖“selected”方法。

    -(void) selected{
    
      isSelected_ = YES;
      if( selectedImage_ ) {
            [normalImage_ setVisible:NO];
            [selectedImage_ setVisible:YES];
            [selectedImage_ runAction:[CCSequence actions:[CCDelayTime actionWithDuration:3],[CCCallFunc actionWithTarget:self selector:@selector(makeVisibile),]nil]];
    
        [disabledImage_ setVisible:NO];
    
      } else { // there is not selected image
    
        [normalImage_ setVisible:YES];
        [selectedImage_ setVisible:NO];
        [disabledImage_ setVisible:NO];
      }
    
    }
    
    -(void)makeVisible{  
         [ selectedImage_ setVisibile:YES];
    }
    

    注意:我没有测试过上面的代码。只是想表达这个想法

    【讨论】: