остановить эффект в cocos2d? - PullRequest
6 голосов
/ 28 августа 2011

после стольких поисков, я не смог найти никакого решения для остановки эффекта в cocos2d.

Мой эффект - воспроизведение звука, взятого из базы данных, поэтому для остановки этого конкретного звука мне нужно:

[[SimpleAudioEngine sharedEngine] stopEffect:[NSString stringWithFormat:@"%@.wav",sound]];

НО я получил предупреждение: stopEffect делает целое число из указателя без приведения ..

почему это? Как я могу остановить все звуки, которые играют одновременно ??? или не конкретный? любым другим способом?

Большое спасибо.

Ответы [ 3 ]

20 голосов
/ 29 августа 2011

хорошо, вы делаете это:

ALuint soundEffectID;

//to start
soundEffectID=[[SimpleAudioEngine sharedEngine] playEffect:@"my sound"];
//to stop
[[SimpleAudioEngine sharedEngine] stopEffect:soundEffectID];
8 голосов
/ 23 апреля 2012

Если у вас нет soundEffectID, вы можете сделать следующее.Это помогло мне решить мою проблему.

static NSMutableArray *soundsIdArr;

@implementation MusicAndSound

//It must be run before using sound
+(void)initSound
{
    NSLog(@"initSound");

    soundsIdArr = [NSMutableArray arrayWithCapacity:0];
    [soundsIdArr retain];
}

+(void)playSound:(NSString *)fileName
{
    [[SimpleAudioEngine sharedEngine] setEffectsVolume:1.0];

    soundEffectID = [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]];

    [soundsIdArr addObject:[NSString stringWithFormat:@"%i", soundEffectID]];
}

+(void)stopAllSounds
{
    [[SimpleAudioEngine sharedEngine] setEffectsVolume:0.0];

    for (int i=0; i<[soundsIdArr count]; i++)
    {
        [[SimpleAudioEngine sharedEngine] stopEffect:[[soundsIdArr objectAtIndex:i] intValue]];
    }

    [soundsIdArr removeAllObjects];
}

- (void)dealloc
{
    [soundsIdArr release];

    [super dealloc];
}

@end
0 голосов
/ 11 сентября 2013

Нечто большее ...

Если вы хотите остановить все звуки бега, тогда

[SimpleAudioEngine end];

но это также освободит sharedEngine, поэтому вам нужно вызвать SharedEngine на случай, если вы захотите снова воспроизвести звук

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