位置: 编程技术 - 正文

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)

  • 没有固定金额的合同叫什么合同
  • 外币账户单位基本情况表
  • 银行转账记录能保存多久
  • 增值税发票跨年抵扣新政策
  • 酒店物料消耗包括哪些
  • 资产处置收益计入营业收入吗
  • 持有至到期投资是什么意思
  • 税务部门罚没收入会计分录
  • 所得税费用是在哪个科目
  • 问福利费的发票如果是增值税专用发票,增值税可以抵扣吗?
  • 原始股 出售
  • 工程项目产生的沙石怎么处理
  • 新个税劳务报酬怎么算
  • 公司商品质量问题导致员工与公司一起被起诉了怎么办
  • 融资租赁开始时的账务处理
  • 企业所得税弥补
  • 未缴少缴税款追征期
  • 补提的增值税应该记在哪里
  • 国家基建项目规划
  • deepin解锁文件
  • 核销后怎么反核销
  • 外经证预缴税款必须去外地交税吗
  • 让记事本文件自动删除
  • 企业所得税预缴可以不交吗
  • vue移动端预览pdf
  • 个体户工商年报异常怎么解除
  • 债券利息收入征税吗
  • win10ie浏览器打开就崩溃
  • Win10 Build 19044.1320 (21H2)更新补丁KB5006738预览版发布(附更新修复内容汇总)
  • pdv文件什么意思
  • windows 11 正式版实际使用体验如何?
  • 转让应收账款是否交税
  • 离职补偿金的会计实务处理
  • 企业盘盈资产开什么发票
  • 企业的存货按照计划成本核算,期初
  • 收回以前年度款项如何处理
  • 超限量发票申请下来后怎么操作
  • 进项逾期未认证怎么办
  • 蓝桥杯大赛2021
  • 所得税预缴申报表怎么填
  • 租房发票怎么缴税
  • 代建工程开发成本核算应设置的会计科目是( )
  • 印花税应计入哪些费用
  • c语言fread函数的用法示例
  • phpcms程序
  • 现金流量表年报期末现金余额
  • 收回投资收到的现金减少
  • 员工餐费补助交个人所得税吗
  • 企业编制现金流量表的主要目的是什么
  • 进出口企业需要英文公章吗
  • 五种差异化收费方式
  • 公司借个人借款协议书范本图片
  • 生产成本中制造费用中包括哪些?
  • 成本和入账价值
  • 报税残疾人保障费怎么算
  • 在建工程增多
  • 现金存货盘盈盘亏计入什么科目
  • 什么是现金什么是现金流
  • 未分配利润转增股本要交税吗怎么交
  • 短期负债率和流动负债率
  • 在建工程工伤保险延期费用计算
  • 小规模附加税要交吗
  • 纳税人财务核算内容包括
  • 高新技术企业每年需要多少专利
  • win7系统c盘太满了,如何清理
  • 苹果电脑mac系统怎么升级
  • win10系统开不了热点
  • win8.1系统安装教程
  • win10连无线网络受限
  • linux或者命令
  • 如何禁用u盘启动项
  • win8.1c盘满了怎么办
  • js开发组件
  • javascript definitive guide
  • dom操作的方法
  • 黄南同仁县海拔多少米
  • 上海市个人所得税计算
  • 政务服务网怎么打印电子资格证书
  • 二手房交易契税减免政策
  • 广东省税务局发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设