cocos2dX 学习笔记——音乐、音效和进度条
每个游戏都需要音乐和音效,当然进度条也是必不可少一种,可以用于于技能CD,所以就用代码介绍和实现一下以上三种。
.cpp中
#include "FifthScene.h"
#include "HelloWorldScene.h"
#include "cocos2d.h"
#include "fourthScene.h"//音乐需要SimpleAudioEngine头文件 还需要CocosDenshion命名空间;
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;USING_NS_CC;
cocos2d::CCScene * FifthScene::createScene()
{
CCScene * scene = CCScene::create();
FifthScene * layer = FifthScene::create();
scene->addChild(layer);
return scene;
}bool FifthScene::init()
{
if (!Layer::init())
{
return false;
}//MenuItemSprite;
Sprite * spriteNormal = Sprite::create("shi.png");
Sprite * spriteSelect = Sprite::create("ming.png");
MenuItemSprite * pMenuItem = MenuItemSprite::create(
spriteNormal,
spriteSelect,
CC_CALLBACK_1(FifthScene::EnterFifthScene, this));//MenuItemLabel;
Label * label1 = Label::create("This is My FifthScene", "calibri.ttf", 30);
label1->setColor(Color3B(255, 0, 0));
MenuItemLabel * pMenuItemLabel = MenuItemLabel::create(label1, CC_CALLBACK_1(FifthScene::EnterFifthScene, this));//MenuItemToggle;
//未选中的精灵;
auto spriteNToggle = Sprite::create("quan.png");
//选中状态的精灵;
auto spriteToggle = Sprite::create("yuan.png");
//将精灵包装成Menuitem 用于创建toggle;
auto musicOn = MenuItemSprite::create(spriteToggle, spriteToggle);
auto musicOff = MenuItemSprite::create(spriteNToggle, spriteNToggle);
//创建toggle;
MenuItemToggle * menuItemToggle = MenuItemToggle::createWithCallback(
CC_CALLBACK_1(FifthScene::menuCallBack, this),
musicOn,
musicOff,
NULL);//auto menu = Menu::create(menuItemToggle, NULL);
//this->addChild(menu);//创建音乐音效点击按钮;
MenuItemSprite * btnMenuSprite = MenuItemSprite::create(
Sprite::create("ren.png"),
Sprite::create("li.png"),
CC_CALLBACK_1(FifthScene::btnSpriteCallBack, this));
//预加载;
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("yue.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect("yin.wav");
//播放音乐;
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("yue.wav");
isPause = false;//创建Menu;
Menu * pMenu = Menu::create(pMenuItem, pMenuItemLabel, menuItemToggle, btnMenuSprite, NULL);
pMenu->setPosition(Director::getInstance()->convertToUI(Point(500, 300)));
//间隔;
pMenu->alignItemsVerticallyWithPadding(55);
this->addChild(pMenu);
pMenuItem->setScale(3);创建进度条;
//表示进度条到多少百分比 执行3秒 停在80%;
//auto progressTo=ProgressTo::create(3,80);
//表示进度条从百分几到百分几 执行三秒 从20% 到80% ;
//auto progressFromTo = ProgressFromTo::create(3,20,80);
// ProgressTimer 用来渲染精灵对象的百分比 有三种形态Radial, Horizontal or vertical ;
//首先生成一个ProgressTimer对象;
//auto pgTimer = ProgressTimer::create(Sprite::create("xuan.png"));
设置进度条类型;
//pgTimer->setType(ProgressTimer::Type::BAR);
添加到this中;
//this->addChild(pgTimer);
让进度条动起来;
//pgTimer->runAction(RepeatForever::create(progressTo));/*setMidpoint;
MidPoint点是用来定义一个进度条的起点位置,如果用的是radials 那就是中心点位置;
如果是bar ;
从左到右,设置midpoint为Point(0,y) ;
从右到左,设置midpoint为Point(1,y) ;
从上到下,设置midpoint为Point(x,1) ;
从下到上,设置midpoint为Point(x,0) ;setBarChangeRate: 分别表示x轴的改变与y轴的改变;
midpoint需要和BarChangeRate配合才能展示出不同效果进度条
Point(x,y);表示动画完成后x轴与y轴分别的改变量
point(0,1);表示最后水平方向不变 只是竖直方向改变了1也就是100%*/
//圆形进度条;
//首先创建一张图片;
auto sp1 = Sprite::create("yuan.png");
//设置进度条的速度和到达目标量;
auto pt1 = ProgressTo::create(3.0f, 85);
//生成一个ProgressTimer对象;
auto ptm1 = ProgressTimer::create(sp1);
//设置进度条类型;
ptm1->setType(ProgressTimerType::RADIAL);
//使进度条运动;
ptm1->runAction(RepeatForever::create(pt1));
ptm1->setPosition(Point(100, 500));
this->addChild(ptm1);//条形进度条;
//从左到右;
auto sp2 = Sprite::create("xuan.png");
auto pt2 = ProgressTo::create(5.0f, 100);
auto ptm2 = ProgressTimer::create(sp2);
ptm2->setType(ProgressTimerType::BAR);
ptm2->runAction(pt2);
ptm2->setMidpoint(Point(0, 1));
ptm2->setBarChangeRate(Point(1, 0));
ptm2->setPosition(300, 500);
this->addChild(ptm2);//从下到上;
auto sp3 = Sprite::create("xuan.png");
auto pt3 = ProgressTo::create(3.5f, 75);
auto ptm3 = ProgressTimer::create(sp3);
ptm3->setType(ProgressTimerType::BAR);
ptm3->runAction(RepeatForever::create(pt3));
ptm3->setMidpoint(Point(1, 0));
ptm3->setBarChangeRate(Point(0, 1));
ptm3->setPosition(Point(550, 500));
this->addChild(ptm3);//变幻形态;
auto sp4 = Sprite::create("yuan.png");
auto pt4 = ProgressTo::create(4.5f, 100);
auto ptm4 = ProgressTimer::create(sp4);
ptm4->setType(ProgressTimerType::RADIAL);
ptm4->setPosition(Point(600, 500));
//从当前的tint转换为自定义的tint;
auto tint = Sequence::create(
TintTo::create(3, 255, 0, 0),
TintTo::create(2, 0, 255, 0),
TintTo::create(5, 0, 0, 255),
NULL);
//淡入实现;
auto fade = Sequence::create(
FadeTo::create(3, 0),
FadeTo::create(3, 255),
NULL);ptm4->runAction(RepeatForever::create(pt4));
ptm4->runAction(RepeatForever::create(tint));
//ptm4->runAction(RepeatForever::create(fade));
this->addChild(ptm4);return true;
}void FifthScene::EnterFifthScene(Ref * ref)
{
Director::getInstance()->replaceScene(TransitionFadeTR::create(1.0f, HelloWorld::createScene()));
}//参数Ref标识点击的MenuItem;
void FifthScene::menuCallBack(Ref * ref)
{
auto item = (MenuItemToggle *)ref;
//获取当前选择的下标 根据下标TODO ;
item->getSelectedIndex();
CCLOG("%d", item->getSelectedIndex());
if (item->getSelectedIndex() == 0)
{
}
else if (item->getSelectedIndex() == 1)
{
关于音乐;
预加载背景音乐;
//SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("music.mp3");
开始播放背景音乐, true 标识循环;
//SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music.mp3", true);
停止背景音乐 传参代表是否释放音乐文件;
//SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
暂停背景音乐;
//SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
重新调用背景音乐;
//SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
返回不二类型参数,表示是否再放背景音乐;
//SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying();
设置音量0.0-1.0;
//SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5f);
//音乐释放;
//SimpleAudioEngine::sharedEngine()->end();关于音效;
预加载背景音效;
//SimpleAudioEngine::sharedEngine()->preloadEffect("music.mp3");
开始播放音效 false代表不循环;
//SimpleAudioEngine::sharedEngine()->playEffect("music.mp3",false);
停止音效 可以选择单独停掉一个音效 这个值是由playEffect返回的;
//SimpleAudioEngine::sharedEngine()->stopEffect(2);
停止所有音效;
//SimpleAudioEngine::sharedEngine()->stopAllEffects();
暂停音效;
//SimpleAudioEngine::sharedEngine()->pauseEffect(2);
重新开始音效;
//SimpleAudioEngine::sharedEngine()->resumeEffect(2);
暂停所有音效;
//SimpleAudioEngine::sharedEngine()->pauseAllEffects();
重新开始所有音效;
//SimpleAudioEngine::sharedEngine()->resumeAllEffects();
设置音效音量;
//SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5);
卸载音效;
//SimpleAudioEngine::sharedEngine()->unloadEffect("music.mp3");
//获取音量;
//SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume();}
}void FifthScene::btnSpriteCallBack(Ref * ref)
{
if (isPause == false)
{
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
isPause = true;
CCLOG("false");
}
else
{
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);
isPause = false;
CCLOG("true");
}}
.h中
cocos2dX 学习笔记——音乐、音效和进度条相关推荐
- h5学习笔记:vuejs 编写进度条
最近要练习一下vuejs,vuejs可以编写一些组件.在之前一直没有尝试,今天尝试以下vuejs组件式的开发也是非常不错.下面记录一下进度条. 使用Vue 编写一个全局组件.参考官方的以下的文档 ht ...
- cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明)
cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明) 1.问:什么是cocos2d-x? 是一套开放源代码,主要基于c,c++语言,针对windows,linux, ...
- cocos2d-x游戏中音乐音效的处理
[i][b]本文为firedragonpzy原创,转载务必在明显处注明: 转载自[Softeware MyZone]原文链接: http://www.firedragonpzy.com.cn/inde ...
- cocos2d-x学习笔记15:cocos2d-x教程资源总结
注:cocos2d可作为cocos2dx的参考,两者接口很相似. 名称:知易的<知易Cocos2D-iPhone开发教程> 官方地址:http://blog.sina.com.cn/s/a ...
- cocos2d-x学习笔记16:记录存储1:CCUserDefault
cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...
- Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果
vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果 需求分析: 类似于大多数音乐播放器中等mini播放器控制按钮,显示播放进度,实时更新进度. progress-cir ...
- android音乐播放器进度条误差研究
2019独角兽企业重金招聘Python工程师标准>>> 如何做一个"流畅"而且"准确"的进度条? 流畅!由两个条件决定,更新的频率 和 更新的 ...
- cocos2d-x 学习笔记(2)cocos2d-x重要概念,项目结构及 CCDirector 导演控件
cocos2d-x 学习笔记(2)cocos2d-x重要概念及项目结构 在cocos2d引擎中,有几个概念,分别是导演,场景,布景和人物角色. 导演(CCDirector)在cocos2d-x引擎中, ...
- android音乐播放器进度条研究
如何做一个"流畅"而且"准确"的进度条? 流畅!由两个条件决定,更新的频率 和 更新的精度 频度和精度要相适应,才能保证流畅,并不是精度越高越好,也不是频度越高 ...
最新文章
- 理解一致性哈希算法(consistent hashing)
- 十天学会ASP.Net——(2)
- Debug Android with Android phone.
- Mutex对象是操作系统级?
- settings.xml‘ has syntax errors
- 根据经纬度计算两点之间的距离
- cadence SPB17.4 - export placement file to openpnp
- pyenchant英文单词拼写检查
- 【Python | 辅助软件】py7zr 库解压 7z 文件避坑
- 有点恐怖,这个工具能让你在 20 秒内,克隆你的声音,并转成英语!
- IFIX数据写入html,iFIX常见问题问答.doc
- ie测试兼容的软件,IE系列浏览器兼容性测试点整理
- idea社区版配置jsp
- 波束形成:最小方差无畸变响应波束形成器(MVDR)
- SAP系统中信用控制功能详解
- java 当前时间_Java 获取当前时间的小时(24小时制)
- html鼠标滑过带音效,html5 + css3 带音效下拉菜单的实现
- 20150119-我喜欢你,是寂静的
- oppo reno5和oppo reno4se哪个好有什么区别 oppo reno5和oppo reno4se参数对比哪款更值得入手
- 摘录--《思考中医》刘力红著
热门文章
- 安卓仿小黑盒绝地求生雷达图
- 双11:天猫要“软着陆”,商家要“小确幸”
- 【计算机网络实验 第一卷:使劲学 加相关网络知识---随着深入会不断补充】
- Metabase学习教程:仪表盘-3
- python编程:判断输入的边长能否构成三角形 如果能则计算出三角形的周长和面积
- SMART 200PLC S型速度曲线应用(梯形图非优化)
- 大学四年—致敬最好的你,希望我的内容,对大学时候迷茫的你有帮助
- Altium Designer 20 (10)——封装的手动创建(CHIP)
- URL编码/解码详解
- Linux 重定向与管道