Приглушение звука проблемы cocos2d - PullRequest
2 голосов
/ 15 февраля 2011

У меня небольшая проблема со сценой настроек в cocos2d, я настроил ее, чтобы я мог приостановить и возобновить звук, нажав кнопку.

-(id)init{
if((self=[super init])){

    //menu background
    CCSprite *bg = [CCSprite spriteWithFile:@"settingsbackground.jpg"];
    bg.anchorPoint = ccp(0, 0);
    bg.position = ccp(0, 0);
    [self addChild:bg z:0];

    CCMenuItem *Back = [CCMenuItemImage itemFromNormalImage:@"backbutton.gif" selectedImage: @"backbutton.gif" target:self selector:@selector(backToMainMenu:)];
    CCMenuItem *On = [CCMenuItemImage itemFromNormalImage:@"soundon1.gif" selectedImage: @"soundon1.gif" target:self selector:@selector(musicOn:)];
    CCMenuItem *Off = [CCMenuItemImage itemFromNormalImage:@"soundoff1.png" selectedImage: @"soundoff1.png" target:self selector:@selector(musicOff:)];

    CCMenu *BackButton = [CCMenu menuWithItems: Back, nil];
    BackButton.position = ccp(25, 295);

    CCMenu *ToggleButtonOn = [CCMenu menuWithItems: On, nil];
    ToggleButtonOn.position = ccp(25, 195);

    CCMenu *ToggleButtonOff = [CCMenu menuWithItems: Off, nil];
    ToggleButtonOff.position = ccp(25, 95);

    [self addChild:BackButton z:1000];
    [self addChild:ToggleButtonOn];
    [self addChild:ToggleButtonOff];


}
return self;

}

  • (void) musicOff: (id) sender { [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];

}

  • (void) musicOn: (id) sender { [[SimpleAudioEngine sharedEngine] resumeBackgroundMusic]; }

Проблема в том, что когда я возвращаюсь в меню, звук начинается снова, даже если он отключен в сцене настроек.

Какой лучший способ обойти это?

Приветствия

Ответы [ 2 ]

1 голос
/ 07 сентября 2012

Создайте переменную appdelegate, в которой хранится текущее состояние тома. И не забудьте включить код setBackgroundMusicVolume в init каждой сцены.

что-то вроде:

[[SimpleAudioEngine sharedEngine] setBackgroundMusicVolume:appDelegate.volume ];

где appdelegate.volumemy appdelegate переменная громкости. Когда вы отключаете звук, установите для переменной значение 0, а для включения звука - 1.

Работает

1 голос
/ 15 февраля 2011

Я ответил на аналогичный вопрос сегодня, мой ответ тоже будет вам стоить Передача звука между сценами cocos2d

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...