首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

cocos2d-x学习MoonWarriorsx(2)开始菜单

2013-01-20 
cocos2d-x学习MoonWarriorsx(二)开始菜单上一篇文章已经实现了MoonWarriors开始菜单的大部分元素,还差一个

cocos2d-x学习MoonWarriorsx(二)开始菜单

上一篇文章已经实现了MoonWarriors开始菜单的大部分元素,还差一个运动的飞船和一个点击newGame的特效和音效。

1.飞船

void Effect::flareEffect(CCNode *parent, CCCallFunc *callback){    // 特效图片    CCSprite *flare = CCSprite::create(s_flare);        // 设置混合模式    ccBlendFunc cbl = {GL_SRC_ALPHA, GL_ONE};    flare->setBlendFunc(cbl);        // 添加到父节点    parent->addChild(flare, 10);        // 设置初始透明度    flare->setOpacity(0);        // 设置初始位置    flare->setPosition(ccp(-30, 297));        // 设置初始角度    flare->setRotation(-120);        // 设置初始放大系数    flare->setScale(0.2);        // 透明度渐变    CCActionInterval *opacityAnim = CCFadeTo::create(0.5, 255);    CCActionInterval *opacDim = CCFadeTo::create(1, 0);        // 大小渐变    CCActionInterval *bigAnim = CCScaleBy::create(0.7, 1.2, 1.2);        // 渐变速率,正玄变化,由快到慢    CCEaseSineOut *biggerEase = CCEaseSineOut::create(bigAnim);    CCActionInterval *moveAnim = CCMoveBy::create(0.5, ccp(328, 0));    CCEaseSineOut *moveEase = CCEaseSineOut::create(moveAnim);        // 角度旋转    CCActionInterval *roteAnim = CCRotateBy::create(2.5, 90);        // 角度旋转速度,指数变化    CCEaseExponentialOut * rotateEase = CCEaseExponentialOut::create(roteAnim);        // 放大到原大小    CCScaleTo *bigger = CCScaleTo::create(0.5, 1);        // 动画完成后回调函数    CCCallFuncN *onComplete =  CCCallFuncN::create(flare, callfuncN_selector(Effect::killFlare));        // 执行动画和回调函数    flare->runAction(CCSequence::create(opacityAnim, biggerEase, opacDim, onComplete, callback,  NULL));    flare->runAction(moveEase);    flare->runAction(rotateEase);    flare->runAction(bigger);}

这个还是按照js的逻辑写的。传了一个parent的node和一个回调函数进来,然后一系列动作,最后执行动作和回调。

回调函数里有个killFlare函数,其实就是用来干掉这个特效精灵的,因为如果不干掉,会一直添加。
到这里,这个菜单的基本功能就做完了,还差一些回调,状态控制等没有加,后续再来弄。

热点排行