每个游戏都需要音乐和音效,当然进度条也是必不可少一种,可以用于于技能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中