位置: 编程技术 - 正文

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)

  • 增值税即征即退怎么计算
  • 行政事业单位购买固定资产的流程
  • 企业所得税的成本是含税还是不含税
  • 开发票高校是企业还是非企业单位
  • 出口港杂费是什么费用
  • 税务申报我的待办是空的
  • 进口增值税可以抵税吗
  • 账簿保管期满如何销毁
  • 临时营业执照有效期多久
  • 当月抵扣的发票可以下个月记账吗
  • 借用另一家公司名义
  • 赔偿金要交增值税吗
  • 购货方申请红字信息表,销售方不开会怎么样
  • 小型连锁药店需要报国税吗?
  • 资本公积转增资本的条件
  • 跨县提供建筑服务增值税申报
  • 营改增后,代扣代缴所得税应当按照含税收入还是不含税收入?
  • 购买健身器材需要注意什么
  • 公司购买的一次性纸杯计入哪个科目
  • 以前年度损益调整贷方余额表示什么
  • 以前年度损益调整贷方余额表示什么
  • 哪些票据可以冲抵增值税
  • 单位卖报纸的钱算什么
  • 如何进行公司注销流程
  • 净利润分配股利的会计分录
  • 如何屏蔽骚扰电话和推销电话
  • 库存商品入库的会计科目
  • 公司购买的机票赔偿可以退公司嘛
  • windows11入门
  • windows 7怎么打开虚拟化
  • 摊余成本计量的金融资产若溢价购买小于
  • 股东年终利润分录怎么写
  • 企业合并支付的资产评估费计入
  • 认缴制下实收资本需要验资吗
  • 安装windows(install windows)
  • php获取文件内容
  • php curl_exec
  • 怎么用ai做vi
  • 实时视频功能
  • php的time函数
  • 激活接口的命令
  • vmware workstation pro怎么卸载干净
  • 企业利润分配的通常去向包括
  • 充油卡 发票
  • mac node-gyp
  • 二手车交易账务处理
  • 织梦怎么用模板建站
  • 其他收益结转到什么账户
  • 应收账款借方余额需要交税吗
  • 背书转让操作
  • sqlserver代理服务启动失败
  • 个人所得税的征收
  • 小微企业开专票需要缴纳多少税
  • 车船税去哪里交
  • 安全生产费会计核算办法
  • 母公司为子公司承担税费
  • 公司注销开户许可证是不是要上交
  • 会计账户与银行账户
  • 租来设备本身原因致人损害
  • 营业外收支主要有哪些
  • ubuntul
  • 惠普tpn-c126笔记本
  • u盘装win8系统教程图解
  • xp系统怎么修改图标和文字大小
  • windows无法完成配置若要尝试恢复配置
  • msmpeng.exe是什么程序
  • mcdlc.exe - mcdlc是什么进程文件 有何作用
  • [置顶]JM259194
  • 安卓新创手势
  • shell脚本tr
  • opengles入门
  • window.open打开窗口设置背景色
  • shell脚本介绍
  • html5游戏引擎排行
  • jquery 获取html
  • 安卓接口回调例子
  • 河南个体工商户营业执照年检
  • 国家税务总局简易征收最新文件
  • 核定土地增值税的条件
  • 提供劳务者受害责任纠纷赔偿案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设