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

これは、私のゲームの1つでそれを行う方法です:

init (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 に答える