1 draw绘图
头文件
t19draw.h
#ifndef
__t19draw_h__
#define
#include
"cocos2d.h"
"tback.h"
using_ns_cc;
class
t19draw:public
tback
{
public:
static
ccscene *
scene();
create_func(t19draw);
bool
init();
void
draw();
};
#endif
t19draw.cpp
"t19draw.h"
"appmacros.h"
ccscene *t19draw::scene()
scene =
ccscene::create();
t19draw *
layer =
t19draw::create();
scene->addchild(layer);
return
scene;
}
t19draw::init()
tback::init();
true;
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);
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支持的音效格式如下:
aggg,wav
对wav的支持不完美
caf,m4a
可以播放cocos2d-iphone,cocosdesion所支持的所有格式
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
__t20music_h__
t20music :public
create_func(t20music);
virtual
cctouchbegan(cctouch
*ptouch,
ccevent *pevent);
t20music.cpp
"t20music.h"
"simpleaudioengine.h"
using
namespace
cocosdenshion;
ccscene *t20music::scene()
ccscene *scene
= ccscene::create();
t20music *
t20music::create();
t20music::init()
//预加载音乐
simpleaudioengine::sharedengine()->preloadeffect("audio/onclick.wav");
simpleaudioengine::sharedengine()->playbackgroundmusic("audio/start.wav");
//设置触摸可以行
settouchenabled(true);
settouchmode(kcctouchesonebyone);
//通过鼠标事件控制声音的显示和消失
t20music::cctouchbegan(cctouch
ccevent *pevent)
flag =
if (flag)
//simpleaudioengine::sharedengine()->playbackgroundmusic("audio/start.wav");
//暂停播放音乐
else
//simpleaudioengine::sharedengine()->stopbackgroundmusic("audio/start.wav");
//重新恢复播放音乐
//控制音量
simpleaudioengine::sharedengine()->stopalleffects();
simpleaudioengine::sharedengine()->unloadeffect("audio/start.wav");
false;
运行效果是:当进入这个scene之后就会听见音乐,当鼠标点击的时候声音停止了。