位置: 编程技术 - 正文

cocos2dx AudioEngine初体验,音效播放结束判断测试

编辑:rootadmin

推荐整理分享cocos2dx AudioEngine初体验,音效播放结束判断测试,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

由于simpleAudioEngine在播放音效时无法获取状态也无法在播放完成后回调,造成音效在按键频繁时发声重叠。改mac版本的库对目前的我来说挑战难度太大。

于是百度了半天,发现3.6版本的cocos2dx有了新的声音播放库AudioEngine。于是体验下,感觉还不错:

直接贴代码:

头文件:

#ifndef __macstudycocos2dx__newAudioEngineTest__

#define __macstudycocos2dx__newAudioEngineTest__

#include <stdio.h>

#include "cocos2d.h"

#include "audio/include/AudioEngine.h"

USING_NS_CC;

using namespace experimental;

class newAudioEngineTest:publicLayer ,publicAudioEngine{

public:

staticcocos2d::Scene* createScene();

virtualbool init();

// a selector callback

void playCallback(cocos2d::Ref* pSender);// 点击按钮后开始播放的回调函数

CREATE_FUNC(newAudioEngineTest);

bool isplaying=false;//标记播放状态

void changer_playingstatus();//播放完成后的回调函数,用来更改播放状态

};

newAudioEngineTest.cpp如下:

#endif /* defined(__macstudycocos2dx__newAudioEngineTest__) */

//

// newAudioEngineTest.cpp

// macstudycocos2dx

//

// Created by WangWei on /6/.

//

//

#include "newAudioEngineTest.h"

Scene* newAudioEngineTest::createScene()

{

// 'scene' is an autorelease object

auto scene =Scene::create();

// 'layer' is an autorelease object

auto layer =newAudioEngineTest::create();

// add layer as a child to scene

scene->addChild(layer);

// return the scene

return scene;

}

bool newAudioEngineTest::init()

{

//////////////////////////////

// 1. super init first

if ( !Layer::init() )

{

return false;

}

Size visibleSize =Director::getInstance()->getVisibleSize();

Vec2 origin =Director::getInstance()->getVisibleOrigin();

auto menuitem=MenuItemFont::create("play wav", CC_CALLBACK_1(newAudioEngineTest::playCallback,this));

//创建菜单项,点击时播放音效

menuitem->setPosition(Vec2(0,0));

cocos2dx AudioEngine初体验,音效播放结束判断测试

// create menu, it's an autorelease object

auto menu =Menu::create(menuitem,NULL);

menu->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));

this->addChild(menu,1);

return true;

}

voidnewAudioEngineTest::playCallback(Ref* pSender)

{

if (!isplaying) {

log("wav is not playing!");

isplaying=true;

int audioID=play2d("man1.wav");//播放音效文件

log("audioID =%d",audioID);

setFinishCallback(audioID,CC_CALLBACK_0(newAudioEngineTest::changer_playingstatus,this));

//音效播放完成后修改播放状态,此时会用到audioID

}

else{

log("wav is playing,this click is not response!");

}

}

voidnewAudioEngineTest::changer_playingstatus(){

isplaying=false;

log("finished,status has been change");

}

以下是log输出:(可以看出audioID是改变的,即使播放同一个音效)

-- ::. macstudycocos2dx iOS[:] cocos2d: surface size: x

wav is not playing!

audioID =0

finished,status has been change

wav is not playing!

audioID =1

finished,status has been change

wav is not playing!

audioID =2

finished,status has been change

wav is not playing!

audioID =3

finished,status has been change

wav is not playing!

audioID =4

wav is playing,this click is not response! //快速点击时

finished,status has been change

wav is not playing!

audioID =5

wav is playing,this click is not response! //快速点击时

wav is playing,this click is not response! //快速点击时

finished,status has been change

wav is not playing!

audioID =6

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

finished,status has been change

wav is not playing!

audioID =7

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

wav is playing,this click is not response!

finished,status has been change

个人觉得如果音效可以使用AudioEngine来做,记住要用caf和wav&#;式。背景音乐可以使用simpleAudioEngine来播放,毕竟simpleAudioEngine有缓存机制。

如果不继承类时可以使用以下方式来播放哦:

int audioID=experimental::AudioEngine::play2d(wavfilestring->getCString());

版权声明:本文为博主原创文章,未经博主允许不得转载。

Cocos2d-3.x_在Lua中使用cjson库解析json prename=codeclass=cppboolAppDelegate::applicationDidFinishLaunching(){autoengine=LuaEngine::getInstance();//注册cjsonLuaStack*stack=engine-getLuaStack();luaopen_lua_extensions_cjson(stack-getLuaStat

实现了个类似blood brothers中的转轴特效 最近比较忙,有一段时间没写东西了,今天算是忙里偷闲,分享点东西。在美区有个游戏叫bloodbrothers,玩了玩,感觉还不错,其中有一个页面,可以选

在cocos2dx中实现水波滤镜 因为工作原因,开始转向cocos2d-x开发方向了。自然的,凭着之前引擎的经验偏向底层渲染研究。在此期间看了两本书《cocos2d-x权威指南》《cocos2d-x高级

标签: cocos2dx AudioEngine初体验,音效播放结束判断测试

本文链接地址:https://www.jiuchutong.com/biancheng/368363.html 转载请保留说明!

上一篇:cocos2dx 使用 crypto++(cocos2d解密)

下一篇:Cocos2d-3.x_在Lua中使用cjson库解析json(cocoscreator lua)

  • 计提房产税和土地税
  • 纳税额是指
  • 税务师税法一税法二区别
  • 小规模纳税人减征额怎么计算
  • 固定资产原值增加后折旧年限变吗
  • 预付款类发票可抵扣吗
  • 报价含税和不含税哪个划算
  • 产成品入库金额和售价一样嘛
  • 房产过户需要缴纳土地出让金吗
  • 防伪税控开具发票明细表
  • 存货盘亏损失可以扣除吗
  • 去年已认证发票红冲怎么报税
  • 简易征收纳税人取得专用发票
  • 百度推广服务费一年多少钱
  • 简单征收的进项税额怎么调出来?
  • 企业所得税弥补亏损怎么算
  • 增值税适用范围和税率
  • 无形资产软件摊销年限是多少
  • 开票金额小于付款金额,怎么办理
  • 网上抵扣发票操作
  • 应收出口退税属于哪个会计科目
  • 鸿蒙系统怎么设置桌面小组件
  • win7bios网络启动
  • 已经认证抵扣的发票,发生冲红,要怎么处理
  • 固定资产财产损失的账务处理
  • 营改增后房地产企业账务处理
  • 红字发票信息表填好后再怎么操作
  • php中implode
  • 所得税年度报表资产总额
  • 企业工资薪金和职工福利费等支出税前扣除问题的公告
  • 企业的存货按计划成本核算
  • php数组分类
  • npm install 的 --save 选项是什么?
  • 小程序从入门到精通
  • 网络安全实验室
  • 任何单位和个人发现洗钱活动有权向什么举报
  • 其他权益工具投资是什么类科目
  • 员工聚餐谁出钱
  • 建立分公司流程
  • 筹建期工会经费怎么算
  • 在哪里验证增值税票
  • 管理人员工资结构图
  • 高速公路通行发票税率
  • 承兑汇票贴现的利率
  • 普票和专票的
  • SqlServer2012中First_Value函数简单分析
  • sql2005 数据同步方法
  • 废旧物资回收公司名称
  • 建筑业无票收入收货款分录
  • 明细分类账户的名称,核算内容及使用方法是什么规定的
  • 固定资产已提完折旧,但仍在使用,需要定期清理吗?
  • 企业因受疫情影响导致停工停产的
  • 资本化支出计入什么科目
  • 购入无形资产属于资产吗
  • 行政单位年终奖的相关发放规定
  • 企业营业利润率怎么算
  • 小规模开专票的税点是多少
  • 收入支出结余怎么记账
  • 事业单位对公账户和零余额账户一样么
  • msde安装1秒不动了
  • sql批量替换字符串
  • bios怎么恢复出厂设置有什么后果?
  • 萝卜家园系统安装教程
  • windows模拟器(可安装电脑软件)
  • 苹果官网
  • linux参数命令
  • mac合盖不休眠怎么办
  • windows升级10
  • linux查看端口数据
  • win7怎么更改系统字体大小
  • 持久化存储数据的方式
  • 批处理界面
  • python中的类怎么理解
  • vue list清空
  • JavaScript window.document的属性、方法和事件小结
  • js字段截取
  • 常州税务局举报网站
  • 事业单位大额资金拨付需要什么报账材料
  • ca登录的用户名和密码分别是什么
  • 浙江农村医保手机上怎么缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设