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之後就會聽見音樂,當滑鼠點選的時候聲音停止了。