cocos2d-x ios遊戲開發初認識(九) 音效、粒子系統與儲存,cocos2d-xios
我們知道,一個遊戲少不了聲音,一些好聽的聲音會提起你對遊戲的興趣,當然做好聽的聲音不是我們要學的,我們的目的是把聲音在適當的時候放出來,順便在這節中會說下簡單的粒子系統和檔案儲存體。
一、聲音的播放:
1、建立一個cocos2d工程添加相應的聲音圖片資源:
播放聲音所用到的內容:
代碼:
這裡可以先在RootViewController.mm裡面設定螢幕 禁止旋轉
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//設定方向
returnUIInterfaceOrientationIsPortrait(interfaceOrientation);
}
- (BOOL) shouldAutorotate {
returnNO; //不允許
}
把HelloWorld 其餘代碼全都刪掉 只留下初始化部分
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
return true;
}
添加背景:
//添加背景圖片
CCSize winsize =CCDirector::sharedDirector()->getWinSize();
CCSprite *bg =CCSprite::create("BG.png");
bg->setPosition(CCPoint(winsize.width/2,winsize.height/2));//3.0以後的做法調用建構函式
this->addChild(bg);
運行:
添加按鈕:
CCMenuItemSprite *item =CCMenuItemSprite::create(CCSprite::create("menu0.png"),CCSprite::create("menu1.png"),this,menu_selector(HelloWorld::onMenuItem));//正常和點擊時候的圖片
item->setPosition(CCPoint(winsize.width/2,100));
CCMenu *menu =CCMenu::create(item,NULL);
menu->setPosition(CCPointZero);
this->addChild(menu);
運行:
下面添加聲音和音效:
//播放音樂
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("bg.mp3",true); //為true表示一直播放
//預先載入音效
SimpleAudioEngine::sharedEngine()->preloadEffect("select.mp3");
事件的點擊函數:
voidHelloWorld::onMenuItem(CCObject *obj)
{
//播放音效
SimpleAudioEngine::sharedEngine()->playEffect("select.mp3");
}
運行:
有聲音發出,點擊按鈕會有音效發出。。。。這就簡單的實現聲音的播放。
二、介紹簡單的粒子系統
cocos2d已經有自己的粒子系統當然也可以用自己的,下面通過代碼實現一個內部的粒子系統:
voidHelloWorld::onMenuItem(CCObject *obj)
{
//播放音效
SimpleAudioEngine::sharedEngine()->playEffect("select.mp3");
//建立粒子系統
CCSize winsize =CCDirector::sharedDirector()->getWinSize();
CCParticleExplosion *ex =CCParticleExplosion::create();
ex->setPosition(CCPoint(winsize.width/2, winsize.height/2));
this->addChild(ex);
}
運行 點擊按鈕:
由於動畫太快,效果不好,大家可以自己示範。。
下面用自己的粒子系統 網路有很多做粒子系統的軟體在這裡我用的是ParticleDesigner開啟:
隨便開啟一個
然後點擊儲存按鈕
第三個
√一定要選儲存的檔案類型為plist檔案,將儲存的plist檔案添加到工程中去。。
代碼實現自己的粒子系統:
//自己配置的粒子系統
CCParticleSystemQuad *Quad =CCParticleSystemQuad::create("test.plist");
Quad->setPosition(CCPoint(winsize.width/2, winsize.height/2));
this->addChild(Quad);
運行:
我們可以看到一個火焰在跳躍,粒子系統被載入進來。。
三、檔案的儲存
cocos2d的儲存跟做ios開發用的儲存差不多。。。
代碼:
voidHelloWorld::onMenuItem(CCObject *obj)
{
//播放音效
SimpleAudioEngine::sharedEngine()->playEffect("select.mp3");
//建立粒子系統
CCSize winsize =CCDirector::sharedDirector()->getWinSize();
CCParticleExplosion *ex =CCParticleExplosion::create();
ex->setPosition(CCPoint(winsize.width/2, winsize.height/2));
this->addChild(ex);
//儲存跟ios的本機存放區差不多 做過ios開發的肯定熟悉
CCUserDefault::sharedUserDefault()->setIntegerForKey("px",12); //通過key儲存
CCUserDefault::sharedUserDefault()->flush();
int px =CCUserDefault::sharedUserDefault()->getIntegerForKey("px");
CCLOG("px = %d",px);
}
運行點擊:
可以看到px的值被列印出來
iOS遊戲編程之從零開始—Cocos2d-x與cocos2d引擎遊戲開發誰有完全版?
到麥可網找,500元1年
ios遊戲開發是用cocos2d還是cocos2d-x,如果用cocos2d-x,多線程怎辦,多線程用objective-c調用?
用pthread實現跨平台。
用cocoa的NSTread或是GCD是無法跨平台的。
你也許會oc的多線程,但在跨平台開發的時候果斷摒棄掉吧。