位置: 编程技术 - 正文

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)

  • 增值税发票税务ukey版开票流程
  • ddp进口清关怎么交税
  • 销售货物业务的销项税额怎么计算
  • 设立登记核准通知书未签名不能办理其他业务
  • 经审计的财务报告包括的内容
  • 借款利息收入计提分录
  • 其他项目工会筹备金怎么报税
  • 个体工商户个税税率表2023年
  • 公司名称房产和房地产区别
  • 摊销制造费用如何结转做会计分录呢?
  • 金税盘年费全额抵扣分录
  • 收到投资担保公司的担保费发票的账务处理
  • 年终奖不走工资走存单,需要缴税吗?
  • 金税盘要钱不
  • 税务会计学知识点
  • 盈余公积金什么时候计提
  • 可以背书转让的公司
  • 快递有发票快递如何收费
  • 收料单的会计分录怎么做
  • 来料加工原材料计入什么科目
  • 库存的物资
  • 去年的成本如何调整
  • 当月费用下月付款怎么做账
  • 建安混合销售能分开吗
  • 企业收到款项
  • php ftp功能
  • 计算机指令用来做什么
  • 可抵免境外所得税税额
  • Bàu Cá Cái的红树林,越南广义 (© Robert Harding World Imagery/Offset)
  • 深度学习第一步——Pytorch-Gpu环境配置:Win11/Win10+Cuda10.2+cuDNN8.5.0+Pytorch1.8.0(步步巨细,少走十年弯路)
  • php事务特性
  • php输出对象
  • 微信小程序的视频怎么下载
  • php分割数组
  • web数据可视化(Echars版)实训
  • 开源原则
  • php与服务器的关系
  • python可以制作软件吗
  • 手机话费怎么打发票
  • 社保基数是按基本工资还是应发工资
  • mysql导出结果
  • 纳税人识别号和信用代码一样吗
  • 年终奖影响社保缴费基数吗
  • 银行日记账期初余额写哪儿
  • 分红需要满足的条件包括
  • 小微企业开专票需要缴纳多少税
  • 期末调汇的会计怎么做账
  • 公司临时工的车可以买吗
  • 费用报销单填写标准
  • 已认证的发票开具红字发票账务处理?
  • 企业如何建账之类的账目
  • sql高级写法
  • windows怎样删除文件
  • 忘记密码 ?
  • ubuntu 10.04安装
  • win8出现问题需要重启
  • win8分屏快捷键
  • win7关机快捷键设置
  • windows 8whql
  • win7总是显示正在连接虚拟磁盘服务怎么办
  • react 技巧
  • nodejs模拟点击
  • nodejs搭建web服务器
  • sed 处理多行
  • cocos2dx小游戏
  • 批处理常用命令总结
  • python true的用法
  • unity协程执行顺序
  • 安卓开发者有多少
  • linux 检查网络状态
  • 怎么看物理内存
  • ubuntu如何下载
  • javascript基础教程教材答案
  • js 截取
  • 使用SQLite本地数据库
  • 企业公示信息怎么查询
  • 国家税务总局通知公告
  • 不含税价是除以1.13还是乘以0.87
  • 广东国税局发票查询系统
  • 税金乘以12%是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设