diff --git a/cocos/audio/RDAudio.cpp b/cocos/audio/RDAudio.cpp index 27506848..566f162f 100644 --- a/cocos/audio/RDAudio.cpp +++ b/cocos/audio/RDAudio.cpp @@ -169,9 +169,12 @@ void RDAudio::scheduleLoop(float) // create OpenAL buffer ALuint bufferID = 0; if (asyncStruct->pcmData) { + // clear old error + alGetError(); alGenBuffers(1, &bufferID); if (alGetError() != AL_NO_ERROR) { cocos2d::log("Error: RDAudio_LoadFile can't gen OpenAL Buffer"); + bufferID = 0; } else { ALenum format = (asyncStruct->channels == 1) ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16; alBufferData(bufferID, format, asyncStruct->pcmData, asyncStruct->size, asyncStruct->rate); diff --git a/quick/framework/audio.lua b/quick/framework/audio.lua index dd3826ea..511b2f41 100644 --- a/quick/framework/audio.lua +++ b/quick/framework/audio.lua @@ -55,7 +55,9 @@ end --------------- buffer ------------------- function audio.loadFile(path, callback) - if not audio._buffers[path] then + if audio._buffers[path] then + callback(path, true) + else assert(callback, "ONLY support asyn load file, please set callback!") Rapid2D_CAudio.newBuffer(path, function(buffID) if buffID then diff --git a/quick/samples/test/src/app/views/Test_Audio.lua b/quick/samples/test/src/app/views/Test_Audio.lua index b592212c..54a1c97f 100755 --- a/quick/samples/test/src/app/views/Test_Audio.lua +++ b/quick/samples/test/src/app/views/Test_Audio.lua @@ -82,12 +82,15 @@ function TestCase:loadBtns() audio.pauseAll() end}, {"SingleEffect_vol0.5", function() - local effect = audio.playEffect("audio/effect.ogg", true) - if effect then - effect:setVolume(0.5) -- change volume just for this effect - self:performWithDelay(function() - effect:stop() -- stop looped effect - end, 3) + if not self._effect then + self._effect = audio.playEffect("audio/effect.ogg", true) + if self._effect then + self._effect:setVolume(0.5) -- change volume just for this effect + self:performWithDelay(function() + self._effect:stop() -- stop looped effect + self._effect = nil + end, 3) + end end end}, {"ResumeAll", function()