cocos2d-x教程5 声音的实现

HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"

#include "SimpleAudioEngine.h"


class HelloWorld : public cocos2d::CCLayer

{

public:

    // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)

    virtual bool init();


    // there's no 'id' in cpp, so we recommend to return the class instance pointer

    static cocos2d::CCScene* scene();

    

    // a selector callback

    void menuCloseCallback(CCObject* pSender);


    // preprocessor macro for "static create()" constructor ( node() deprecated )

    CREATE_FUNC(HelloWorld);

    

     unsigned int nSoundId;//音效id

};


#endif // __HELLOWORLD_SCENE_H__


HelloWorldScene.cpp

#include "HelloWorldScene.h"

#include "SimpleAudioEngine.h"


using namespace cocos2d;

using namespace CocosDenshion;


CCScene* HelloWorld::scene()

{

    // 'scene' is an autorelease object

    CCScene *scene = CCScene::create();

    

    // 'layer' is an autorelease object

    HelloWorld *layer = HelloWorld::create();


    // add layer as a child to scene

    scene->addChild(layer);


    // return the scene

    return scene;

}


// on "init" you need to initialize your instance

bool HelloWorld::init()

{

    //

    // 1. super init first

    if ( !CCLayer::init() )

    {

        return false;

    }

    //预价值背景音乐

    SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("地上.mp3");

    //预价值背景音乐

    SimpleAudioEngine::sharedEngine()->preloadEffect("加一条命.mp3");

    SimpleAudioEngine::sharedEngine()->preloadEffect("吃到蘑菇或花.mp3");

    

    

    CCMenuItemLabel* playBg =CCMenuItemFont::create("播放背景音乐", this, menu_selector(HelloWorld::menuCloseCallback));

    playBg->setTag(1);

    CCMenuItemLabel* stopBg =CCMenuItemFont::create("停止背景音乐", this, menu_selector(HelloWorld::menuCloseCallback));

    stopBg->setTag(2);

    CCMenuItemLabel* pauseBg =CCMenuItemFont::create("暂停背景音乐", this, menu_selector(HelloWorld::menuCloseCallback));

    pauseBg->setTag(3);

    CCMenuItemLabel* resumeBg =CCMenuItemFont::create("恢复背景音乐", this, menu_selector(HelloWorld::menuCloseCallback));

    resumeBg->setTag(4);

    CCMenuItemLabel* rewindBg =CCMenuItemFont::create("重头播放背景音乐", this, menu_selector(HelloWorld::menuCloseCallback));

    rewindBg->setTag(5);

    CCMenuItemLabel* jiaBg =CCMenuItemFont::create("背景音乐:加", this, menu_selector(HelloWorld::menuCloseCallback));

    jiaBg->setTag(6);

    CCMenuItemLabel* jianBg =CCMenuItemFont::create("背景音乐:减", this, menu_selector(HelloWorld::menuCloseCallback));

    jianBg->setTag(7);


    

    CCMenu* leftMenu = CCMenu::create(playBg,stopBg,pauseBg,resumeBg,rewindBg,jiaBg,jianBg,NULL);

    leftMenu->alignItemsVerticallyWithPadding(5);

    leftMenu->setPositionX(CCDirector::sharedDirector()->getWinSize().width/4);

    this->addChild(leftMenu);

    

    

    CCMenuItemLabel* playEffect =CCMenuItemFont::create("播放音效1", this, menu_selector(HelloWorld::menuCloseCallback));

    playEffect->setTag(10);

    CCMenuItemLabel* stopEffect =CCMenuItemFont::create("停止音效1", this, menu_selector(HelloWorld::menuCloseCallback));

    stopEffect->setTag(11);

    CCMenuItemLabel* pauseEffect =CCMenuItemFont::create("暂停音效1", this, menu_selector(HelloWorld::menuCloseCallback));

    pauseEffect->setTag(12);

    CCMenuItemLabel* resumeEffect =CCMenuItemFont::create("恢复音效1", this, menu_selector(HelloWorld::menuCloseCallback));

    resumeEffect->setTag(13);

    CCMenuItemLabel* unloadEffect =CCMenuItemFont::create("从缓存移除音效1", this, menu_selector(HelloWorld::menuCloseCallback));

    unloadEffect->setTag(14);

    

     CCMenuItemLabel* playEffect2 =CCMenuItemFont::create("播放音效2", this, menu_selector(HelloWorld::menuCloseCallback));

    playEffect2->setTag(15);

    CCMenuItemLabel* stopALLEffect =CCMenuItemFont::create("停止所有音效", this, menu_selector(HelloWorld::menuCloseCallback));

    stopALLEffect->setTag(16);

    CCMenuItemLabel* pauseAllEffect =CCMenuItemFont::create("暂停所有音效", this, menu_selector(HelloWorld::menuCloseCallback));

    pauseAllEffect->setTag(17);

    CCMenuItemLabel* resumeALLEffect =CCMenuItemFont::create("恢复所有音效", this, menu_selector(HelloWorld::menuCloseCallback));

    resumeALLEffect->setTag(18);

    

    CCMenu* rightMenu = CCMenu::create(playEffect,stopEffect,pauseEffect,resumeEffect,unloadEffect,playEffect2,stopALLEffect,pauseAllEffect,resumeALLEffect,NULL);

    rightMenu->alignItemsVerticallyWithPadding(5);

    rightMenu->setPositionX(CCDirector::sharedDirector()->getWinSize().width * 3/4);

    this->addChild(rightMenu);

    

   

    

    

    return true;

}


void HelloWorld::menuCloseCallback(CCObject* pSender)

{

    CCNode* tagNode = (CCNode*) pSender;

    int tag = tagNode->getTag();

   

    switch (tag) {

        case 1:

            //播放背景音乐 一个参数默认不循环

            SimpleAudioEngine::sharedEngine()->playBackgroundMusic("地上.mp3");

            break;

        case 2:

            //停止背景音乐

            SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();

            break;

        case 3:

            //暂停背景音乐

            SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();

            break;

        case 4:

            //恢复背景音乐

            SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();

            break;

        case 5:

            //重头播放背景音乐

            SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();

            break;

        case 6:

            //背景音乐:

            SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(

                                                                        SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume()+0.1f);

            break;

        case 7:

            //背景音乐:减

            SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(

                                                                        SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume()-0.1f);

            break;

        case 10:

            //播放音效1 循环

            nSoundIdSimpleAudioEngine::sharedEngine()->playEffect("吃到蘑菇或花.mp3", true);

            break;

        case 11:

            //停止音效1

            SimpleAudioEngine::sharedEngine()->stopEffect(nSoundId);

            break;

        case 12:

            //暂停音效1

            SimpleAudioEngine::sharedEngine()->pauseEffect(nSoundId);

            break;

        case 13:

            //恢复音效1

            SimpleAudioEngine::sharedEngine()->resumeEffect(nSoundId);

            break;

        case 14:

            //从缓存移除音效1

            SimpleAudioEngine::sharedEngine()->unloadEffect("吃到蘑菇或花.mp3");

            break;

        case 15:

            //播放音效2

            nSoundIdSimpleAudioEngine::sharedEngine()->playEffect("加一条命.mp3");            break;

        case 16:

            //停止所有音效

            SimpleAudioEngine::sharedEngine()->stopAllEffects();

            break;

        case 17:

            //暂停所有音效

            SimpleAudioEngine::sharedEngine()->pauseAllEffects();

            break;

        case 18:

            //恢复所有音效

            SimpleAudioEngine::sharedEngine()->resumeAllEffects();

            break;

        default:

            break;


}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值