cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

我们知道,一个游戏少不了声音,一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来,顺便在这节中会说下简单的粒子系统和文件存储。

一、声音的播放:

1、新建一个cocos2d工程添加相应的声音图片资源:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

播放声音所用到的内容:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

代码:

这里可以先在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);

运行:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

添加按钮:

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

运行:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

下面添加声音和音效:

    //播放音乐

    SimpleAudioEngine::sharedEngine()->playBackgroundMusic("bg.mp3", true); //为true表示一直播放

   

    //预加载音效

    SimpleAudioEngine::sharedEngine()->preloadEffect("select.mp3");

事件的点击函数:

void HelloWorld::onMenuItem(CCObject *obj)

{

    //播放音效

    SimpleAudioEngine::sharedEngine()->playEffect("select.mp3");    

}

运行:

有声音发出,点击按钮会有音效发出。。。。这就简单的实现声音的播放。

二、介绍简单的粒子系统

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

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

}

运行 点击按钮:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

由于动画太快,截图效果不好,大家可以自己演示。。

下面用自己的粒子系统 网络有很多做粒子系统的软件在这里我用的是ParticleDesigner打开:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

随便打开一个

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

然后点击保存按钮

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储第三个

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

√一定要选保存的文件类型为plist文件,将保存的plist文件添加到工程中去。。

代码实现自己的粒子系统:

    //自己配置的粒子系统

    CCParticleSystemQuad *Quad = CCParticleSystemQuad::create("test.plist");

    Quad->setPosition(CCPoint(winsize.width/2, winsize.height/2));

    this->addChild(Quad);

运行:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

我们可以看到一个火焰在跳跃,粒子系统被加载进来。。

三、文件的存储

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

    

}

运行点击:

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

可以看到px的值被打印出来


cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储,布布扣,bubuko.com

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

上一篇:Android TextView内容过长加省略号,点击显示全部内容


下一篇:[原]零基础学习在Android进行SDL开发系列文章