我们知道,一个游戏少不了声音,一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来,顺便在这节中会说下简单的粒子系统和文件存储。
一、声音的播放:
1、新建一个cocos2d工程添加相应的声音图片资源:
播放声音所用到的内容:
代码:
这里可以先在RootViewController.mm里面设置屏幕 禁止旋转
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//设置方向
return
UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
- (BOOL) shouldAutorotate {
return NO;
//不允许
}
把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");
事件的点击函数:
void
HelloWorld::onMenuItem(CCObject *obj)
{
//播放音效
SimpleAudioEngine::sharedEngine()->playEffect("select.mp3");
}
运行:
有声音发出,点击按钮会有音效发出。。。。这就简单的实现声音的播放。
二、介绍简单的粒子系统
cocos2d已经有自己的粒子系统当然也可以用自己的,下面通过代码实现一个内部的粒子系统:
void
HelloWorld::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开发用的存储差不多。。。
代码:
void
HelloWorld::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的值被打印出来
cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储,布布扣,bubuko.com