5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制
2014-10-30 10:59
525 查看
1 draw绘图
头文件
T19Draw.h
#ifndef
__T19Draw_H__
#define
__T19Draw_H__
#include
"cocos2d.h"
#include
"TBack.h"
USING_NS_CC;
class
T19Draw:public
TBack
{
public:
static
CCScene *
scene();
CREATE_FUNC(T19Draw);
bool
init();
void
draw();
};
#endif
T19Draw.cpp
#include
"T19Draw.h"
#include
"AppMacros.h"
CCScene *T19Draw::scene()
{
CCScene *
scene =
CCScene::create();
T19Draw *
layer =
T19Draw::create();
scene->addChild(layer);
return
scene;
}
bool
T19Draw::init()
{
TBack::init();
return
true;
}
void
T19Draw::draw()
{
//设置点的尺寸大小
ccPointSize(10);
//设置颜色
ccDrawColor4B(255,0,0,0);
//做一个点,ccp(100,100)中的值是点的坐标位置
ccDrawPoint(ccp(100,100));
//定义一个点的集合
CCPoint
p[] = {ccp(100,200),ccp(100,300),ccp(200,100)};
//开始画点,第二个参数表示点的个数
ccDrawPoints(p,
3);
//画一条线段
ccDrawColor4B(0, 255, 0, 0);
glLineWidth(5);
ccDrawLine(ccp(100,300),ccp(200,100));
//画一个矩形,由对角线的两个点最终生成两个矩形
ccDrawRect(ccp(100,100),ccp(400,300));
ccDrawColor4B(0, 0, 255, 0);
CCPoint
poly[] = {
ccp(150, 100),
ccp(200, 150),
ccp(300, 10) };
//以上面的三个点画出一个矩形,最后一个false来控制形状是否合并
//第二个参数表示的是点的个数
ccDrawPoly(poly,
3, true);
//这里表示话一个圆
ccDrawCircle(ccp(240,160),60,3.14,100,true);
}
运行结果:
2
声音和音效
一个游戏,如果不加声音会降低整个游戏的吸引力,一些经典的游戏,我们一听到声音,就知道是什么游戏。这就是声音给玩家留下的深刻音效,游戏里面的声音分为两种:北京音乐和音效使用音效引擎
我们可以使用Cocos2d-x自带的CocosDension库来使用声音引擎。CocosDension实现了简单易用的SimpleAudioEngin类,为了使用它,我们只需要引入它的头文件即可:
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
支持平台与格式
CocosDension支持的音乐格式如下:
平台
支持的常见文件格式
备注
Android
mp3,mid,oggg,wav
可以播放android,media,MediaPlayer所支持的所有格式
ios
acc,caf,mp3,wav
可以播放AVAudioPlayer所支持的所有格式
Windows
mid,mp3,wav
无
CocosDension支持的音效格式如下:
平台
支持的常见文件格式
备注
Android
aggg,wav
对wav的支持不完美
Ios
caf,m4a
可以播放Cocos2d-iphone,CocosDesion所支持的所有格式
windows
mid,wav
无
4
预加载
加载音乐和音效通常是一个耗时间的过程,因此为了防止由加载产生的延时导致实际播放与游戏播放不协调的现象。在播放音效和音乐前,需要预加载音乐文件。
通常我们会在进入场景前调用一下两个方法来预加载文件。
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect(“audio/onclick.wav”);
5
播放与停止Vs暂停和恢复
SimpleAudioEngine::sharedEngine()->playBackgroundMusic(“audio/start.wav”);
bool T19Music::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) {
SimpleAudioEngine::sharedEngine()->playEffect("audio/onclick.wav");
static bool flag = true;
if (flag) {
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
//SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
} else {
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
//SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
}
flag = !flag;
return true;
}
6
其它成员
volumn范围为[0,1]
//设置音量大小
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.1f);
//获得音量的大小
SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume();
7
进入后台或从后台进入
void AppDelegate::applicationDidEnterBackground() {
CCDirector::sharedDirector()->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
CCDirector::sharedDirector()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
8
案例说明:
T20Music.h
#ifndef
__T20Music_H__
#define
__T20Music_H__
#include
"cocos2d.h"
#include
"TBack.h"
USING_NS_CC;
class
T20Music :public
TBack
{
public:
static
CCScene *
scene();
CREATE_FUNC(T20Music);
bool
init();
virtual
bool
ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent);
};
#endif
T20Music.cpp
#include
"T20Music.h"
#include
"AppMacros.h"
#include
"SimpleAudioEngine.h"
using
namespace
CocosDenshion;
CCScene *T20Music::scene()
{
CCScene *scene
= CCScene::create();
T20Music *
layer =
T20Music::create();
scene->addChild(layer);
return
scene;
}
bool
T20Music::init()
{
TBack::init();
//预加载音乐
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect("audio/onclick.wav");
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
//设置触摸可以行
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);
return
true;
}
//通过鼠标事件控制声音的显示和消失
bool
T20Music::ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent)
{
static
bool
flag =
true;
SimpleAudioEngine::sharedEngine()->playEffect("audio/onclick.wav");
if (flag)
{
//SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
//暂停播放音乐
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
else
{
//SimpleAudioEngine::sharedEngine()->stopBackgroundMusic("audio/start.wav");
//重新恢复播放音乐
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
flag = !flag;
//控制音量
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.1f);
SimpleAudioEngine::sharedEngine()->stopAllEffects();
SimpleAudioEngine::sharedEngine()->unloadEffect("audio/start.wav");
return
false;
}
运行效果是:当进入这个scene之后就会听见音乐,当鼠标点击的时候声音停止了。
1 draw绘图
头文件
T19Draw.h
#ifndef
__T19Draw_H__
#define
__T19Draw_H__
#include
"cocos2d.h"
#include
"TBack.h"
USING_NS_CC;
class
T19Draw:public
TBack
{
public:
static
CCScene *
scene();
CREATE_FUNC(T19Draw);
bool
init();
void
draw();
};
#endif
T19Draw.cpp
#include
"T19Draw.h"
#include
"AppMacros.h"
CCScene *T19Draw::scene()
{
CCScene *
scene =
CCScene::create();
T19Draw *
layer =
T19Draw::create();
scene->addChild(layer);
return
scene;
}
bool
T19Draw::init()
{
TBack::init();
return
true;
}
void
T19Draw::draw()
{
//设置点的尺寸大小
ccPointSize(10);
//设置颜色
ccDrawColor4B(255,0,0,0);
//做一个点,ccp(100,100)中的值是点的坐标位置
ccDrawPoint(ccp(100,100));
//定义一个点的集合
CCPoint
p[] = {ccp(100,200),ccp(100,300),ccp(200,100)};
//开始画点,第二个参数表示点的个数
ccDrawPoints(p,
3);
//画一条线段
ccDrawColor4B(0, 255, 0, 0);
glLineWidth(5);
ccDrawLine(ccp(100,300),ccp(200,100));
//画一个矩形,由对角线的两个点最终生成两个矩形
ccDrawRect(ccp(100,100),ccp(400,300));
ccDrawColor4B(0, 0, 255, 0);
CCPoint
poly[] = {
ccp(150, 100),
ccp(200, 150),
ccp(300, 10) };
//以上面的三个点画出一个矩形,最后一个false来控制形状是否合并
//第二个参数表示的是点的个数
ccDrawPoly(poly,
3, true);
//这里表示话一个圆
ccDrawCircle(ccp(240,160),60,3.14,100,true);
}
运行结果:
2
声音和音效
一个游戏,如果不加声音会降低整个游戏的吸引力,一些经典的游戏,我们一听到声音,就知道是什么游戏。这就是声音给玩家留下的深刻音效,游戏里面的声音分为两种:北京音乐和音效使用音效引擎
我们可以使用Cocos2d-x自带的CocosDension库来使用声音引擎。CocosDension实现了简单易用的SimpleAudioEngin类,为了使用它,我们只需要引入它的头文件即可:
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
支持平台与格式
CocosDension支持的音乐格式如下:
平台
支持的常见文件格式
备注
Android
mp3,mid,oggg,wav
可以播放android,media,MediaPlayer所支持的所有格式
ios
acc,caf,mp3,wav
可以播放AVAudioPlayer所支持的所有格式
Windows
mid,mp3,wav
无
CocosDension支持的音效格式如下:
平台
支持的常见文件格式
备注
Android
aggg,wav
对wav的支持不完美
Ios
caf,m4a
可以播放Cocos2d-iphone,CocosDesion所支持的所有格式
windows
mid,wav
无
4
预加载
加载音乐和音效通常是一个耗时间的过程,因此为了防止由加载产生的延时导致实际播放与游戏播放不协调的现象。在播放音效和音乐前,需要预加载音乐文件。
通常我们会在进入场景前调用一下两个方法来预加载文件。
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect(“audio/onclick.wav”);
5
播放与停止Vs暂停和恢复
SimpleAudioEngine::sharedEngine()->playBackgroundMusic(“audio/start.wav”);
bool T19Music::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) {
SimpleAudioEngine::sharedEngine()->playEffect("audio/onclick.wav");
static bool flag = true;
if (flag) {
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
//SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
} else {
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
//SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
}
flag = !flag;
return true;
}
6
其它成员
volumn范围为[0,1]
//设置音量大小
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.1f);
//获得音量的大小
SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume();
7
进入后台或从后台进入
void AppDelegate::applicationDidEnterBackground() {
CCDirector::sharedDirector()->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
CCDirector::sharedDirector()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
8
案例说明:
T20Music.h
#ifndef
__T20Music_H__
#define
__T20Music_H__
#include
"cocos2d.h"
#include
"TBack.h"
USING_NS_CC;
class
T20Music :public
TBack
{
public:
static
CCScene *
scene();
CREATE_FUNC(T20Music);
bool
init();
virtual
bool
ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent);
};
#endif
T20Music.cpp
#include
"T20Music.h"
#include
"AppMacros.h"
#include
"SimpleAudioEngine.h"
using
namespace
CocosDenshion;
CCScene *T20Music::scene()
{
CCScene *scene
= CCScene::create();
T20Music *
layer =
T20Music::create();
scene->addChild(layer);
return
scene;
}
bool
T20Music::init()
{
TBack::init();
//预加载音乐
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav");
SimpleAudioEngine::sharedEngine()->preloadEffect("audio/onclick.wav");
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
//设置触摸可以行
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);
return
true;
}
//通过鼠标事件控制声音的显示和消失
bool
T20Music::ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent)
{
static
bool
flag =
true;
SimpleAudioEngine::sharedEngine()->playEffect("audio/onclick.wav");
if (flag)
{
//SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav");
//暂停播放音乐
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
else
{
//SimpleAudioEngine::sharedEngine()->stopBackgroundMusic("audio/start.wav");
//重新恢复播放音乐
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
flag = !flag;
//控制音量
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.1f);
SimpleAudioEngine::sharedEngine()->stopAllEffects();
SimpleAudioEngine::sharedEngine()->unloadEffect("audio/start.wav");
return
false;
}
运行效果是:当进入这个scene之后就会听见音乐,当鼠标点击的时候声音停止了。
相关文章推荐
- MediaElement视频控制:播放、暂停、停止、后退、快进、跳转、音量
- 用as控制音效的播放、暂停、停止及时间显示
- 控制 MediaElement(播放、暂停、停止、音量和速度)
- AS3.0实现音乐的播放,停止,暂停,和音量的控制
- 控制 MediaElement(播放、暂停、停止、音量和速度)
- Android AudioManager处理两个播放器同时有声音,停止其中一个播放的问题,暂停其他的播放
- js控制html5 audio的暂停、播放、停止
- Cocos2dx - -播放声音和音效的实现
- 简单的Android音乐播放,解决incall类型不能通过音量按键控制声音大小的问题
- cocos2dx AudioEngine(声音播放)音效播放结束判断测试和背景音乐播放
- 系统启动没有声音,音量控制图标不能正常显示,但realplayer能正常播放
- audio 基本功能实现(audio停止播放,audio如何静音,audio音量控制等)
- ActionScript 3.0 按钮控制音乐播放、暂停、停止、循环
- js 控制flash 播放 停止 暂停 放大 缩小
- iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
- 关于加载外部SWF文件的声音控制
- 关于win平台下cocos2dx背景音乐及音效的声音调节问题
- cocos2dx 3.x 声音播放、音量调节
- 【Unity快速实现小功能】声音控制三部曲之(三)—— 声音、音效开关以及音量大小控制
- java线程停止、暂停和恢复等状态的控制