Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现

HelloWorld场景就是游戏中的主菜单场景。HelloWorld.h文件代码如下:

#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"
#include "SimpleAudioEngine.h"											①
#include "SettingScene.h"

class HelloWorld : public cocos2d::Layer
{
public:
	static cocos2d::Scene* createScene();

	virtual bool init();  													②
	virtual void onEnter();
	virtual void onEnterTransitionDidFinish();
	virtual void onExit();
	virtual void onExitTransitionDidStart();
	virtual void cleanup();													③

	void menuItemHelpCallback(cocos2d::Ref* pSender);
	void menuItemStartCallback(cocos2d::Ref* pSender);
	void menuItemSettingCallback(cocos2d::Ref* pSender);
	CREATE_FUNC(HelloWorld);
};

bool HelloWorld::init()
{
	if ( !Layer::init() )
	{
		return false;
	}

	log("HelloWorld init");

	Size visibleSize = Director::getInstance()->getVisibleSize();
	Point origin = Director::getInstance()->getVisibleOrigin();

	Sprite *bg = Sprite::create("background.png");

	bg->setPosition(Point(origin.x + visibleSize.width/2,
		origin.y + visibleSize.height /2));
	this->addChild(bg);

	//开始精灵
	Sprite *startSpriteNormal = Sprite::create("start-up.png");
	Sprite *startSpriteSelected = Sprite::create("start-down.png");

	MenuItemSprite *startMenuItem = MenuItemSprite::create(startSpriteNormal,
		startSpriteSelected,
		CC_CALLBACK_1(HelloWorld::menuItemStartCallback, this));
	startMenuItem->setPosition(Director::getInstance()->convertToGL(Point(700, 170)));

	// 设置图片菜单
	MenuItemImage *settingMenuItem = MenuItemImage::create(
		"setting-up.png",
		"setting-down.png",
		CC_CALLBACK_1(HelloWorld::menuItemSettingCallback, this));
	settingMenuItem->setPosition(Director::getInstance()->convertToGL(Point(480, 400)));

	// 帮助图片菜单
	MenuItemImage *helpMenuItem = MenuItemImage::create(
		"help-up.png",
		"help-down.png",
		CC_CALLBACK_1(HelloWorld::menuItemHelpCallback, this));
	helpMenuItem->setPosition(Director::getInstance()->convertToGL(Point(860, 480)));

	Menu* mu = Menu::create(startMenuItem, settingMenuItem, helpMenuItem, NULL);
	mu->setPosition(Point::ZERO);
	this->addChild(mu);

	return true;
}

void HelloWorld::menuItemSettingCallback(Ref* pSender)
{
	auto sc = Setting::createScene();
	auto reScene = TransitionJumpZoom::create(1.0f, sc);
	Director::getInstance()->pushScene(reScene);
	SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");					②
}

void HelloWorld::menuItemHelpCallback(Ref* pSender)
{
	MenuItem* item = (MenuItem*)pSender;
	log("Touch Help %p", item);
	SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");					③
}

void HelloWorld::menuItemStartCallback(Ref* pSender)
{
	MenuItem* item = (MenuItem*)pSender;
	log("Touch Start %p", item);
	SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav");					④
}

void HelloWorld::onEnter()
{
	Layer::onEnter();
	log("HelloWorld onEnter");
}

void HelloWorld::onEnterTransitionDidFinish()
{
	Layer::onEnterTransitionDidFinish();
	log("HelloWorld onEnterTransitionDidFinish");
	//播放
	SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true);		⑤
}

void HelloWorld::onExit()
{
	Layer::onExit();
	log("HelloWorld onExit");
}

void HelloWorld::onExitTransitionDidStart()
{
	Layer::onExitTransitionDidStart();
	log("HelloWorld onExitTransitionDidStart");
}

void HelloWorld::cleanup()
{
	Layer::cleanup();
	log("HelloWorld cleanup");
	//停止
	SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3");			⑥
}

上述代码第①行using namespace CocosDenshion是使用命名空间CocosDenshion,它是CocosDenshion引擎所需要的。代码②、③、④行SimpleAudioEngine::getInstance()->playEffect("sound/Blip.wav")是在点击菜单时候播放音效。第⑤行代码是onEnterTransitionDidFinish()函数中播放背景音乐。第⑥行代码是cleanup()函数中停止播放背景音乐。

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入cocos2d-x技术讨论群:257760386、327403678

Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现,布布扣,bubuko.com

时间: 2024-10-12 19:03:11

Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现的相关文章

Cocos2d-x实例:设置背景音乐与音效-设置场景实现

设置场景(Setting),Setting.h文件代码如下: [html] view plaincopy #ifndef __Setting_SCENE_H__ #define __Setting_SCENE_H__ #include "cocos2d.h" #include "SimpleAudioEngine.h" class Setting : public cocos2d::Layer { bool isEffect;                    

Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现

为了进一步了解背景音乐和音效播放的,我们通过一个实例给大家介绍一下.如下图所示有两个场景:HelloWorld和Setting.在HelloWorld场景点击"游戏设置"菜单可以切换到Setting场景,在Setting场景中可以设置是否播放背景音乐和音效,设置完成后点击"OK"菜单可以返回到HelloWorld场景. 我们需要在AppDelegate中实现背景音乐播放暂停与继续函数,AppDelegate.h文件代码如下: #ifndef _APP_DELEGAT

Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置

UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活.UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵等对象的状态. 我们通过一个实例介绍一下在游戏项目中如何使用UserDefault.如图所示,在Setting场景中可以设置是否播放背景音乐和音效,现在我们将它完善将选择的状态保存到UserDefault中. 设置背景音乐与音效(上图HelloWorld场景.下图Setting场景) 我们需要定义两

Cocos2d-JS 中游戏背景音乐与音效

游戏中音频的处理也是非常重要的,它分为背景音乐播放与音效播放. 背景音乐是长时间循环播放的,它会长时间占用较大的内存,背景音乐不能多个同时播放. 而音效是短的声音,它占用内存较小,音效能多个同时播放. 在Cocos2d-JS中提供了一个音频引擎-AudioEngine,通过引擎能够很好地控制游戏背景音乐与音效优化播放. Cocos2d-JS音频文件 音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号通过音频编码变成音频数字信号保存到某种格式文件中.在播放过程中再对音频文件解码

cocos2d-x 3.0 背景音乐与音效

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 声明: 本文章用VS2012编译,cocos2d-x 3.0 版本. 我也是新手,如有错误,欢迎指出,共同进步. 嗯哼~ 这次学习背景音乐和音效的使用~ 是不是好开心的呢! 照旧,首先新建一个工程~(啥?怎么建?!...,出门,往前找) 首先,要知道,cocos

【cocos2d-x游戏开发】背景音乐与音效

在游戏中,我们把音乐文件分为两类.一是背景音乐,二是音效.比如说,进入一个场景之中,会有背景音乐的声音,主角是做出动作时,会有音效的产生等等呐.. 然而背景音乐和音效音乐是不大相同的,一般来说,背景音乐是很长的,然而音效却是很短暂的,只有短短的几秒而已.所以说,背景音乐只能播放一首,然而,音效却可以同时播放多个,相信大家在玩游戏时也有所体会. 在cocos2d-x3.x中,我们可以十分方便的调用CocosDenshion音效引擎库.我们需要加载音频文件时,只需要把相关的头文件写进来就可以了. #

Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)

游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import SpriteKit //引入多媒体框架 import AVFoundation class SoundManager :SKNode{     //申明一个播放器

【Cocos2d TestCpp实例模仿】-- ActionsTest

一.TestCpp实例ActionsTest 模块中ActionManual动作 素材原图: 动作效果图: 程序代码: bool HelloWorld::init() { if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVi

LayaBox怎么添加背景音乐和音效

首先,我们要在项目下的 res目录里面放入项目所需要的音效和背景音乐 然后要在项目的开始预加载这个音乐 //预加载主游戏页面图片资源数组 var res:Array<any> = [ {url:"res/atlas/ui.json",type:Laya.Loader.ATLAS}, {url:"res/atlas/ui.png",type:Laya.Loader.IMAGE}, {url:"res/atlas/bg.mp3",type