位置: 编程技术 - 正文

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)

  • 视同销售计税价格如何确定?
  • 办税员可以购票吗?
  • 资产负债表期末数是本年累计数吗
  • 直接抵免和间接抵免的区别
  • 押金不退转收入的情况说明
  • 混合经营销售额合并计算还是分开计算
  • 小规模企业收到专票可以入账吗
  • 每个月0申报,对企业有什么影响吗?
  • 他人购买股权个人所得缴纳个人所得税率是多少?
  • 支付利息的诉讼请求
  • 可转换债券发行主体
  • 民办非企业单位是什么单位性质
  • 合伙企业缴纳税款时间
  • 营改增要交增值税吗
  • 企业给员工购买的团体意外险的被保险人一般是
  • 营改增后房地产企业增值税税收筹划存在问题
  • 超市购物卡开票可以做账吗
  • 代销方式的特点
  • 机顶盒包括
  • 实发工资需扣除所得税吗
  • 如何保护excel表格不被打开
  • 如何在Excel中进行数据筛选
  • linux 将一个文件的内容给另一个文件
  • 租赁合同维修费用
  • 购买种子怎么做账
  • 刷信用卡没手续费
  • 一般公司的hr会查案底吗
  • Win11怎么设置开机跳过密码
  • linux killall
  • 建筑业预缴企业所得税税率是多少
  • mac笔记本装了双系统后打开苹果系统和原来一样吗
  • 债券转换为普通债权
  • 固定资产一次性扣除申报表怎么填
  • 特许权使用费包括哪些内容
  • 企业股股票
  • nacos安装包
  • 办公用品属于会计科目中的什么
  • python机器人编程控制
  • php中&&什么意思
  • 固定资产减值损失属于营业外支出吗
  • 单位应缴住房公积金
  • 税控系统维护费普通发票可以全额抵扣吗
  • 企业应付职工薪酬
  • db2 knowledge center
  • 没有开具发票的收入如何入账?
  • 保单的增值税发票能抵税吗
  • 年终奖可以税前扣除吗
  • 研发费用加计扣除新税收政策
  • 提取折旧的意义
  • 加班打车费用计入什么科目
  • 红冲凭证怎么做分录
  • 产品检验费怎样计算
  • 非居民企业境内所得
  • 车辆报废如何进行
  • 计提待摊费用分录
  • 借资本公积贷递延所得税负债是什么意思
  • 发票入账的时候能作废吗
  • 研发费用中可以有委托研发核算吗
  • 关联交易定价方法包括
  • 微软雅黑可以免费用吗
  • u盘启动pe装机工具怎么用
  • bios如何设置关机键开机
  • vc运行程序exe停止工作
  • win8右下角图标不见了
  • win7小喇叭有个红叉
  • linux保存配置文件
  • linux设置utf8编码
  • linux中shell命令
  • linux查看内存型号与数量
  • vue组件用法
  • js日历插件日期选择器
  • 基于vue的ui框架
  • unity接入安卓sdk
  • 发布python程序
  • 一般纳税人开具的增值税普通发票和专用发票的区别
  • 副局长哪里任命
  • 小规模增值税减免会计科目
  • 稳岗补贴是否需要发放
  • 专票一个单位一张可以吗
  • 新余契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设