适用于iOS的ObjectAL / OpenAL - 在运行时停止/暂停/静音?

时间:2014-04-01 23:03:25

标签: cocos2d-iphone audio

这是ObjectAL / OpenAL iOS文档:

http://kstenerud.github.io/ObjectAL-for-iPhone/documentation/index.html#use_objectal_sec

在世界上如何在运行时简单地停止/暂停/静音特定声音(而不是所有声音)?

我尝试过使用OALSimpleAudio,OpenAL Objects和OALAudioTrack,但没有运气。

我正在使用cocos2d v3。

1 个答案:

答案 0 :(得分:1)

您可以按照ObjectAL demos中提供的示例进行操作,例如SingleSourceDemo。

在他们的评论中提到了@ LearnCocos2D建议的ALSource。我会在这里解释一下。 首先,你应该有音频引擎 - 让我们说它是OALSimpleAudio。此外,让我们假设你不想用它来播放效果 - 它们将由不同的ALSource管理:

    ALSource* effectSource;
    ALBuffer* effectBuffer; //this is for the effect buffer

    //don't reserve source for OALSimpleAudio 
    [OALSimpleAudio sharedInstance].reservedSources = 0;

    //create the source for the effect.
    source = [ALSource source]; 

    //buffer the source file. 
    buffer = [[OpenALManager sharedInstance] bufferFromFile:@"audiofile.caf"]; 

现在您可以使用以下方法播放/暂停/音高:

    [source play:buffer loop:YES]; //play sound from buffer and loop
    [source stop]; //stop 
    [source rewind]; //rewind sound to the beggining 
    [source fadeTo:0.0f duration:1.0f target:self selector:@selector(onFadeComplete:)]; //fade effect from source
    [source pitchTo:0.0f duration:1.0f target:self selector:@selector(onFadeComplete:)]; //pitch effect from source

等。希望这会有所帮助。