0

在 Cocos2D for iPhone 中,如何在用户触摸菜单项时自动播放点击音效?

我的想法是改变 CCMenu.m 中的 ccTouchEnded 如下:

-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
    NSAssert(state_ == kCCMenuStateTrackingTouch, 
        @"[Menu ccTouchEnded] -- invalid state");

    [selectedItem_ unselected];
    [selectedItem_ activate];

    state_ = kCCMenuStateWaiting;

    // Play a click effect whenever any menu item was touched
    [MyMusicHandler playClick];

}

这有效并且做我想做的事。但它是“破解源代码”,我更喜欢继承 CCMenu。但是,如果我将完全相同的方法放入我的 CCMenu 子类中,它就不起作用。建议?

4

1 回答 1

0

这就是我在其中一款游戏中的做法:

在初始化(GETextMenuItem 子类 CCMenuItemLabel)中:

confirmMenuItem_=[GETextMenuItem textMenuItemWithText:@"Buy" 
                                           dimensions:CGSizeMake(90,32) 
                                            alignment:UITextAlignmentCenter
                                                 font:@"Cochin-Bold" 
                                             fontSize:17 
                                               target:self 
                                             selector:@selector(onConfirm)];

在选择器中(GameEngine 是一个本土的单例,它提供了随处可用的各种服务):

-(void) onConfirm{

    // immediately prevent a double click

    menu_.isTouchEnabled=NO;
    [[GameEngine sharedGameEngine].soundProvider playFxNowWithSound:@"sound_fx_menu_buy.mp3"];
    NSString *params = [NSString stringWithFormat:@"quantity:%i",quantity_];
    [consumer_ menuReturnsForTag:self.menuTag withParams:params];
    [self flyOut];
}
于 2012-07-12T04:02:19.610 回答