1 draw绘图
#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() { scene = CCScene::create(); T19Draw * layer = create(); scene->addChild(layer); return scene; }
bool init() { TBack::init(); return true; }
void draw() { //设置点的尺寸大小 ccPointSize(10); //设置颜色 ccDrawColor4B(255,0); //做一个点,ccp(100,100)中的值是点的坐标位置 ccDrawPoint(ccp(100,100));
//定义一个点的集合 CCPoint p[] = {ccp(200,100)}; //开始画点,第二个参数表示点的个数 ccDrawPoints(p,3);
//画一条线段 ccDrawColor4B(0,255,0); glLineWidth(5); ccDrawLine(
//画一个矩形,由对角线的两个点最终生成两个矩形 ccDrawRect(ccp(400,300));
CCPoint poly[] = { ccp(150,150),138); font-family:新宋体; font-size:9.5pt">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,0); padding:0cm 5.4pt; width:223.65pt; background-color:transparent"> |
|
Windows |
mid,0); padding:0cm 5.4pt; width:223.65pt; background-color:transparent"> 无 |
CocosDension支持的音效格式如下:
平台 |
Android |
aggg,0); padding:0cm 5.4pt; width:223.65pt; background-color:transparent"> 对wav的支持不完美 |
|
Ios |
caf,m4a |
可以播放Cocos2d-iphone,CocosDesion所支持的所有格式 |
|
windows |
无 |
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(); |
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 "TBack.h" USING_NS_CC; class T20Music :public 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;
T20Music::CCScene *T20Music * layer = init(); //预加载音乐 SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav"); preloadEffect("audio/onclick.wav"); playBackgroundMusic("audio/start.wav");
//设置触摸可以行 setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); return true; }
//通过鼠标事件控制声音的显示和消失 bool CCEvent *pEvent) { static bool flag = true; playEffect("audio/onclick.wav"); if (flag) { //SimpleAudioEngine::sharedEngine()->playBackgroundMusic("audio/start.wav"); //暂停播放音乐 pauseBackgroundMusic(); } else { //SimpleAudioEngine::sharedEngine()->stopBackgroundMusic("audio/start.wav"); //重新恢复播放音乐 resumeBackgroundMusic(); }
flag = !flag; //控制音量 setBackgroundMusicVolume(0.1f);
stopAllEffects(); unloadEffect("audio/start.wav");
return false; } |
运行效果是:当进入这个scene之后就会听见音乐,当鼠标点击的时候声音停止了。 |