加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂

发布时间:2020-12-14 19:15:49 所属栏目:百科 来源:网络整理
导读:?? 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 (); voi
??

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()

{

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">

可以播放AVAudioPlayer所支持的所有格式

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();

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 "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之后就会听见音乐,当鼠标点击的时候声音停止了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读