位置: 编程技术 - 正文

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)

  • 增值税发票综合服务平台怎么下载
  • 小规模纳税人征税规定
  • 劳务外包人员在本公司可报销吗
  • 企业购入固定资产在每期末应使用公允价值法进行计量
  • 财政基建拨款如何做分录
  • 所得税费用贷方表示什么
  • 单位买绿植可以报销吗
  • 企业多交所得税不想退税在电子税务局如何处理
  • 退回投资款转为借款怎么记账
  • 单位投资非盈利性组织怎样核算
  • 应收账款和长期应收款区别
  • 股票属于现金及股票吗
  • 电子发票怎么红冲步骤视频
  • 增值税减免税申报明细表怎么填写1%
  • 公休假补贴多少钱
  • 开发商开临时发票
  • 外地派人来出差怎么报备
  • 500元以下不需要发票
  • 收回固定资产残值
  • 银行承兑汇票企业账户没钱
  • 个税免税收入和不征税收入
  • 开启浏览器模式
  • macbookpro提醒事项
  • 公司章程认缴时效是多久
  • 汇票线下清算什么时候能到账
  • wifi安全助手每日提现
  • 支付给代理机构的手续费
  • msmpeng.exe是什么进程
  • vue3+ts写法
  • Vue3 入门笔记 ---- 利用Element Plus对页面进行布局划分以及实现左侧公共菜单
  • 劳务派遣发票会扣税吗
  • 坏账减值准备账务处理
  • 浅谈php技术
  • framework3.5怎么打开
  • php pdo连接sqlserver
  • 印花税不足一元需要缴纳吗
  • 使用ChatGPT进行AI对话
  • uni app ios
  • 三方债权债务抵销
  • phpcms默认密码
  • 个税率是多少
  • 报表中库存商品怎么填
  • 发票作废发票怎么处理
  • 会计要离职了要注意几点
  • 销项负数发票需不需要增加库存
  • 本年累计金额怎么得到
  • 进项未认证但已开票怎么办
  • phpipam使用
  • python缺省函数
  • 成本核算分摊方法总结
  • 缴纳增值税的会计处理方法
  • 年报中的资产总额怎么计算
  • 同一控制和非同一控制的区别图解
  • 独立法人的全资子公司
  • 企业破产作用
  • 参加新冠疫情防控工作感悟 医务人员
  • 税总函2019是什么意思
  • 付款金额与发票金额不一致能入账吗?
  • 外资企业对应的企业是什么
  • 分公司往子公司投资如何做税务处理?
  • 记账金额错误
  • 会计中结转属于什么科目
  • 商品流通企业会计做账流程
  • 公司初建账都有什么账
  • mysql绿色版和安装版有什么区别
  • cmd shutdown命令
  • 巧妙设置Vista任务栏和开始菜单的属性
  • mac虚拟机安装教程win10正版
  • winxp系统怎么安装
  • 禁止windows安装程序
  • grub4dos linux
  • win10系统怎么调整输入法
  • unity画面效果润色
  • JQuery datepicker 用法详解
  • Android studio DrawerLayout
  • python框架flask系列
  • 税务异地协查系统管理办法
  • 福建农村医保怎么报销
  • 微信 税务
  • 农产品进项税额核定扣除办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设