日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d实现语音_Cocos2d-x 3.2 Lua示例CocosDenshionTest(音频测试)

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d实现语音_Cocos2d-x 3.2 Lua示例CocosDenshionTest(音频测试) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--[[

CocosDenshionTest.lua

Cocos2d-x 音頻支持

]]--

require "AudioEngine"

local EFFECT_FILE = "effect1.wav"

local MUSIC_FILE = nil

-- 獲取目標平臺

local targetPlatform = cc.Application:getInstance():getTargetPlatform()

-- iphone或者ipad

if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) then

MUSIC_FILE = "background.caf" -- caf格式

else

MUSIC_FILE = "background.mp3" -- mp3格式

end

local LINE_SPACE = 40

local function CocosDenshionTest()

local ret = cc.Layer:create()

local m_pItmeMenu = nil

local m_tBeginPos = cc.p(0, 0)

local m_nSoundId = 0

-- 測試菜單項

local testItems = {

"play background music",

"stop background music",

"pause background music",

"resume background music",

"rewind background music",

"is background music playing",

"play effect",

"play effect repeatly",

"stop effect",

"unload effect",

"add background music volume",

"sub background music volume",

"add effects volume",

"sub effects volume",

"pause effect",

"resume effect",

"pause all effects",

"resume all effects",

"stop all effects"

}

-- 菜單回調方法

local function menuCallback(tag, pMenuItem)

local nIdx = pMenuItem:getLocalZOrder() - 10000

-- play background music

if nIdx == 0 then

AudioEngine.playMusic(MUSIC_FILE, true) -- 播放音樂

elseif nIdx == 1 then

-- stop background music

AudioEngine.stopMusic() -- 停止背景音樂

elseif nIdx == 2 then

-- pause background music

AudioEngine.pauseMusic() -- 暫停音樂

elseif nIdx == 3 then

-- resume background music

AudioEngine.resumeMusic() -- 繼續播放音樂

-- rewind background music

elseif nIdx == 4 then

AudioEngine.rewindMusic() -- 循環播放

elseif nIdx == 5 then

-- is background music playing

if AudioEngine.isMusicPlaying () then -- 音樂正在播放

cclog("background music is playing")

else

cclog("background music is not playing")

end

elseif nIdx == 6 then

-- play effect

m_nSoundId = AudioEngine.playEffect(EFFECT_FILE) -- 播放音效

elseif nIdx == 7 then

-- play effect

m_nSoundId = AudioEngine.playEffect(EFFECT_FILE, true) -- 播放音效,第二個參數表示是否循環,true表示循環

elseif nIdx == 8 then

-- stop effect

AudioEngine.stopEffect(m_nSoundId) -- 停止音效

elseif nIdx == 9 then

-- unload effect

AudioEngine.unloadEffect(EFFECT_FILE) -- 不加載音效

elseif nIdx == 10 then

-- add bakcground music volume

AudioEngine.setMusicVolume(AudioEngine.getMusicVolume() + 0.1) -- 增加音量

elseif nIdx == 11 then

-- sub backgroud music volume

AudioEngine.setMusicVolume(AudioEngine.getMusicVolume() - 0.1) -- 減小音量

elseif nIdx == 12 then

-- add effects volume

AudioEngine.setEffectsVolume(AudioEngine.getEffectsVolume() + 0.1) -- 增加音效音量

elseif nIdx == 13 then

-- sub effects volume

AudioEngine.setEffectsVolume(AudioEngine.getEffectsVolume() - 0.1) -- 減少音效音量

elseif nIdx == 14 then

AudioEngine.pauseEffect(m_nSoundId) -- 暫停音效

elseif nIdx == 15 then

AudioEngine.resumeEffect(m_nSoundId) -- 恢復音效

elseif nIdx == 16 then

AudioEngine.pauseAllEffects() -- 暫停所有音效

elseif nIdx == 17 then

AudioEngine.resumeAllEffects() -- 恢復所有音效

elseif nIdx == 18 then

AudioEngine.stopAllEffects() -- 停止所有音效

end

end

-- add menu items for tests

m_pItmeMenu = cc.Menu:create() -- 創建菜單

m_nTestCount = table.getn(testItems)

local i = 1

for i = 1, m_nTestCount do

local label = cc.Label:createWithTTF(testItems[i], s_arialPath, 24)

label:setAnchorPoint(cc.p(0.5, 0.5))

local pMenuItem = cc.MenuItemLabel:create(label) -- 菜單標簽

pMenuItem:registerScriptTapHandler(menuCallback) -- 注冊菜單回調方法

m_pItmeMenu:addChild(pMenuItem, i + 10000 -1)

pMenuItem:setPosition( cc.p( VisibleRect:center().x, (VisibleRect:top().y - i * LINE_SPACE) ))

end

-- 設置菜單內容大小

m_pItmeMenu:setContentSize(cc.size(VisibleRect:getVisibleRect().width, (m_nTestCount + 1) * LINE_SPACE))

m_pItmeMenu:setPosition(cc.p(0, 0))

ret:addChild(m_pItmeMenu)

-- preload background music and effect

AudioEngine.preloadMusic( MUSIC_FILE ) -- 預加載音樂

AudioEngine.preloadEffect( EFFECT_FILE ) -- 預加載音效

-- set default volume

AudioEngine.setEffectsVolume(0.5) -- 設置音效音量

AudioEngine.setMusicVolume(0.5) -- 設置音樂音量

local function onNodeEvent(event)

if event == "enter" then -- 進來時

elseif event == "exit" then -- 退出時

AudioEngine.destroyInstance() -- 銷毀對象

end

end

-- 注冊層的結點事件

ret:registerScriptHandler(onNodeEvent)

local prev = {x = 0, y = 0}

local function onTouchEvent(eventType, x, y)

if eventType == "began" then -- 開始點擊

prev.x = x

prev.y = y

m_tBeginPos = cc.p(x, y) -- 開始點擊位置

return true

elseif eventType == "moved" then -- 移動事件

local touchLocation = cc.p(x, y) -- 獲取觸摸的位置

local nMoveY = touchLocation.y - m_tBeginPos.y -- 觸摸位置減去開始位置等于移動的距離

local curPosX, curPosY = m_pItmeMenu:getPosition() -- 獲取當前菜單的位置

local curPos = cc.p(curPosX, curPosY) -- 當前位置

local nextPos = cc.p(curPos.x, curPos.y + nMoveY) -- 下一個位置

if nextPos.y < 0.0 then

m_pItmeMenu:setPosition(cc.p(0, 0))

end

if nextPos.y > ((m_nTestCount + 1)* LINE_SPACE - VisibleRect:getVisibleRect().height) then

m_pItmeMenu:setPosition(cc.p(0, ((m_nTestCount + 1)* LINE_SPACE - VisibleRect:getVisibleRect().height)))

end

m_pItmeMenu:setPosition(nextPos)

m_tBeginPos.x = touchLocation.x -- 重新記錄開始位置

m_tBeginPos.y = touchLocation.y

prev.x = x

prev.y = y

end

end

-- 觸摸開始回調方法

local function onTouchBegan(touch, event)

local location = touch:getLocation()

prev.x = location.x

prev.y = location.y

m_tBeginPos = location

return true

end

-- 觸摸移動的回調方法

local function onTouchMoved(touch, event)

local location = touch:getLocation()

local touchLocation = location

local nMoveY = touchLocation.y - m_tBeginPos.y

local curPosX, curPosY = m_pItmeMenu:getPosition()

local curPos = cc.p(curPosX, curPosY)

local nextPos = cc.p(curPos.x, curPos.y + nMoveY)

if nextPos.y < 0.0 then

m_pItmeMenu:setPosition(cc.p(0, 0))

end

if nextPos.y > ((m_nTestCount + 1)* LINE_SPACE - VisibleRect:getVisibleRect().height) then

m_pItmeMenu:setPosition(cc.p(0, ((m_nTestCount + 1)* LINE_SPACE - VisibleRect:getVisibleRect().height)))

end

m_pItmeMenu:setPosition(nextPos)

m_tBeginPos.x = touchLocation.x

m_tBeginPos.y = touchLocation.y

prev.x = location.x

prev.y = location.y

end

-- 單點觸摸

local listener = cc.EventListenerTouchOneByOne:create()

listener:setSwallowTouches(true)

-- 注冊腳本監聽事件

listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )

listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )

local eventDispatcher = ret:getEventDispatcher()

eventDispatcher:addEventListenerWithSceneGraphPriority(listener, ret)

return ret

end

function CocosDenshionTestMain()

cclog("CocosDenshionTestMain")

local scene = cc.Scene:create()

scene:addChild(CocosDenshionTest())

scene:addChild(CreateBackMenuItem())

return scene

end

總結

以上是生活随笔為你收集整理的cocos2d实现语音_Cocos2d-x 3.2 Lua示例CocosDenshionTest(音频测试)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。