每个游戏都需要音乐和音效,当然进度条也是必不可少一种,可以用于于技能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 学习笔记——音乐、音效和进度条相关推荐

  1. h5学习笔记:vuejs 编写进度条

    最近要练习一下vuejs,vuejs可以编写一些组件.在之前一直没有尝试,今天尝试以下vuejs组件式的开发也是非常不错.下面记录一下进度条. 使用Vue 编写一个全局组件.参考官方的以下的文档 ht ...

  2. cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明)

    cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明) 1.问:什么是cocos2d-x? 是一套开放源代码,主要基于c,c++语言,针对windows,linux, ...

  3. cocos2d-x游戏中音乐音效的处理

    [i][b]本文为firedragonpzy原创,转载务必在明显处注明: 转载自[Softeware MyZone]原文链接: http://www.firedragonpzy.com.cn/inde ...

  4. cocos2d-x学习笔记15:cocos2d-x教程资源总结

    注:cocos2d可作为cocos2dx的参考,两者接口很相似. 名称:知易的<知易Cocos2D-iPhone开发教程> 官方地址:http://blog.sina.com.cn/s/a ...

  5. cocos2d-x学习笔记16:记录存储1:CCUserDefault

    cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...

  6. Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果

    vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果 需求分析: 类似于大多数音乐播放器中等mini播放器控制按钮,显示播放进度,实时更新进度. progress-cir ...

  7. android音乐播放器进度条误差研究

    2019独角兽企业重金招聘Python工程师标准>>> 如何做一个"流畅"而且"准确"的进度条? 流畅!由两个条件决定,更新的频率 和 更新的 ...

  8. cocos2d-x 学习笔记(2)cocos2d-x重要概念,项目结构及 CCDirector 导演控件

    cocos2d-x 学习笔记(2)cocos2d-x重要概念及项目结构 在cocos2d引擎中,有几个概念,分别是导演,场景,布景和人物角色. 导演(CCDirector)在cocos2d-x引擎中, ...

  9. android音乐播放器进度条研究

    如何做一个"流畅"而且"准确"的进度条? 流畅!由两个条件决定,更新的频率 和 更新的精度 频度和精度要相适应,才能保证流畅,并不是精度越高越好,也不是频度越高 ...

最新文章

  1. 理解一致性哈希算法(consistent hashing)
  2. 十天学会ASP.Net——(2)
  3. Debug Android with Android phone.
  4. Mutex对象是操作系统级?
  5. settings.xml‘ has syntax errors
  6. 根据经纬度计算两点之间的距离
  7. cadence SPB17.4 - export placement file to openpnp
  8. pyenchant英文单词拼写检查
  9. 【Python | 辅助软件】py7zr 库解压 7z 文件避坑
  10. 有点恐怖,这个工具能让你在 20 秒内,克隆你的声音,并转成英语!
  11. IFIX数据写入html,iFIX常见问题问答.doc
  12. ie测试兼容的软件,IE系列浏览器兼容性测试点整理
  13. idea社区版配置jsp
  14. 波束形成:最小方差无畸变响应波束形成器(MVDR)
  15. SAP系统中信用控制功能详解
  16. java 当前时间_Java 获取当前时间的小时(24小时制)
  17. html鼠标滑过带音效,html5 + css3 带音效下拉菜单的实现
  18. 20150119-我喜欢你,是寂静的
  19. oppo reno5和oppo reno4se哪个好有什么区别 oppo reno5和oppo reno4se参数对比哪款更值得入手
  20. 摘录--《思考中医》刘力红著

热门文章

  1. 安卓仿小黑盒绝地求生雷达图
  2. 双11:天猫要“软着陆”,商家要“小确幸”
  3. 【计算机网络实验 第一卷:使劲学 加相关网络知识---随着深入会不断补充】
  4. Metabase学习教程:仪表盘-3
  5. python编程:判断输入的边长能否构成三角形 如果能则计算出三角形的周长和面积
  6. SMART 200PLC S型速度曲线应用(梯形图非优化)
  7. 大学四年—致敬最好的你,希望我的内容,对大学时候迷茫的你有帮助
  8. Altium Designer 20 (10)——封装的手动创建(CHIP)
  9. URL编码/解码详解
  10. Linux 重定向与管道