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-x 3.2 Lua演示样本CocosDenshionTest(音频测试)的更多相关文章
- Cocos2d-x 3.2 Lua演示样本 ActionTest(操作测试)
Cocos2d-x 3.2 Lua演示样本 ActionTest(操作测试) 2014年博文大赛,请投上您宝贵的一票:http://vote.blog.csdn.net/Article/Details ...
- Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理) 本篇博客介绍Cocos2d-x的动作管理样例,这个样例展示了Cocos2d-x的几个动作: MoveTo ...
- Cocos2d-x 3.1.1 Lua演示样例 ActionEaseTest(动作)
Cocos2d-x Lua演示样例 ActionEaseTest(动作) 本篇博客介绍Cocos2d-x中的动作,Cocos2d-x为我们提供了丰富的动作接口,以下笔者就具体介绍一下: 本系列 ...
- 模式识别 - 处理多个演示样本研究(MIL)特点(matlab)
处理多个演示样本研究(MIL)特点(matlab) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27206325 多演示样例学习 ...
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...
- java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章
java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章 thinking in java 4免费下载:http://download.csdn.net/d ...
- Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器)
Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器) 本篇博客介绍Cocos2d-x 为我们提供的一个类--AssetsManager在Lua中的使用样例,效果 ...
- Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)
Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条) 本篇博客介绍Cocos2d-x中的进度条动画,进度条涉及以下几个重要的类和方法,笔者来给大家具体解说一 ...
随机推荐
- Hadoop Spark 集群简便安装总结
本人实际安装经验,目的是为以后高速安装.仅供自己參考. 一.Hadoop 1.操作系统一如既往:①setup关掉防火墙.②vi /etc/sysconfig/selinux,改SELINUX=disa ...
- surfaceflinger中各个layer的排序
surfaceflinger的主要工作就是负责把上层传递下来的各个不同的layer进行composition. 这里,我们来讨论一下各个layer在surfaceflinger中的上下排序关系和相关的 ...
- wamp在win7下64位系统memcache/memcached安装教程
折腾了1个多小时,终于搞定.操作系统时64位的,php5.3.13 类似于上一篇的xdebug安装教程~~ memcache和memcached的区别 在自己的新程序中打算全面应用memcached ...
- 修ecshop品牌筛选以LOGO图片形式显示
如何实现商品列表页属性筛选区品牌筛选以LOGO形式展示,最模板总结ecshop/'>ecshop教程入下: 1.修改 category.php 文件,将(大概215行) $sql = " ...
- EF 批量 循环删除
var list = db.T_xAppRecord.Where(u => u.Id == 1).ToList(); //2.0 遍历集合,将 要删除的 对象 的代理对象的State 设置为 D ...
- 【原创】最近写的一个比较hack的小爬虫
目标:爬取爱漫画上面自己喜欢的一个漫画 分析阶段: 0.打开爱漫画主页,迎面就是一坨js代码..直接晕了 1.经过抓包和对html源码的分析,可以发现爱漫画通过另外一个域名发送图片,而当前域名中通过j ...
- oracle 转 mysql 最新有效法(转)
关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...
- 工作经常使用的SQL整理,实战篇(一)
原文:工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实 ...
- android插件化-apkplug框架启动-02
本文章基于apkplug v1.6.7 版本号编写,最新方式以官网最新消息为准 一 apkplug框架所须要的库文件(宿主) 可从http://git.oschina.net/plug/apkplug ...
- HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
n积分m文章无向边 它输出一个哈密顿电路 #include <cstdio> #include <cstring> #include <iostream> usin ...