日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


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

?

總結

以上是生活随笔為你收集整理的5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。