位置: 编程技术 - 正文

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)

  • 个体工商户超过免税额度如何收税
  • 怎么恢复自然人个人信息
  • 净利润和盈余公积的会计分录
  • 个人所得税租房专项扣除标准
  • 金融商品转让和持有至到期都需要缴纳增值税吗
  • 一般纳税人附加税减免政策2023
  • 信用卡到账手续费
  • 个人开劳务发票怎么开
  • 房地产增值税怎么算抵扣土地款
  • 出售使用过的固定资产
  • 拿到一个材料如何加工
  • 不缴地税国税可停票吗?
  • 纳税人签字
  • 政府回收土地要交土地增值税吗
  • 生产型企业一般会有哪些外来文件
  • 收到退印花税款怎么入账
  • 已抵扣进项税额转出滞纳金
  • 会计核算中利润包括哪些
  • 技术合同 免税
  • 发票和款未付可以抵扣吗
  • 个体工商户开9%的税需要什么
  • 固定资产报废清理账务处理
  • ahqinit.exe是什么进程 ahqinit是安全的进程吗
  • 没有独立显卡没有核显能开机吗
  • 支付手续费委托代销是什么意思
  • 保理业务的会计记账
  • php file_get_contents smb
  • 合伙企业利润分配原则
  • 富文本编辑器使用
  • 转出未交增值税最终怎么转平
  • 在建工程减值准备借贷方向
  • 按摊余成本计量的应收账款
  • 劳务分包的形式有哪些
  • 判断文件是否存在,存在则删除
  • css设置旋转动画
  • 公对公退款必须退至原账户的规定
  • 企业所得税季末资产总额
  • 为什么盈余公积减少,未分配利润增加
  • 人工智能自动对焦又叫什么
  • mysql索引优化的方案
  • 外贸进项税额怎么算
  • 现金流量套期与公允价值套期的区别
  • 补充登记法是全部都用蓝字吗
  • 借贷记账法的基本规则和账户结构
  • 去年出口
  • 产品成本核算的方法
  • 周转材料应该计入什么科目
  • 以汽车投资作为投资项目
  • 多计提的工资怎么调账
  • 工伤保险待遇是否属于劳动争议
  • 企业为什么要进行绩效管理?
  • 国际贸易单证有什么制单要求
  • CREATE FUNCTION sqlserver用户定义函数
  • mysql压缩包安装教程8.0.20
  • linux安装linux
  • vmware 10虚拟机
  • bios 设置
  • rundll32.exe在哪个文件夹
  • ubuntu中用root删除文件夹
  • centos7 lo
  • linux rpm如何安装
  • slee81.exe - slee81是什么进程
  • win 7系统无法删除系统文件
  • 电脑显示无windows
  • win7系统出现问题怎么修复
  • linux哪里好
  • 系统干净启动
  • cocos2d教程
  • android怎么保存项目
  • linux流量监测工具
  • python将结果写入excel
  • JavaScript中的方法名不区分大小写
  • Python爬取微信视频号
  • javascript教程 csdn
  • 侧边栏html
  • android键盘aosp
  • 航天金税软件怎么下载
  • 三亚国税局各区领导班子
  • 查询如何查询
  • 二手车中介公司怎么做账报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设