Cocos2d-X中可以讲菜单和动作结合起来使用实现菜单特效
程序实例1:使用菜单和动作的组合实现菜单特效《一》
#include "MenuItem.h"CCScene* MenuItem::scene(){ CCScene* scene = CCScene::create(); MenuItem* layer = MenuItem::create(); scene->addChild(layer); return scene;}bool MenuItem::init(){ //初始化父类层 cclayer::init(); //得到窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个Menu(看不到效果,Menu只是一个容器) Ccmenu* menu = Ccmenu::create(); //添加Menu addChild(menu); //创建一个只显示文本的菜单项 CcmenuItemFont* itemFont = CcmenuItemFont::create("This is Font"); //添加菜单项 menu->addChild(itemFont); //创建一个带有艺术字体的菜单 CcmenuItemAtlasFont* itemAtlas = CcmenuItemAtlasFont::create("123456","labelatlasimg.png",24,32,'0'); //添加菜单项 menu->addChild(itemAtlas); //创建带有图片的菜单项 CcmenuItemImage* itemImage = CcmenuItemImage::create("Closenormal.png","CloseSelected.png"); //添加菜单项 menu->addChild(itemImage); //用标签创建菜单项 CcmenuItemLabel* itemLabelTTF = CcmenuItemLabel::create( cclabelTTF::create("This is Label TTF item","Arial",36) ); //添加菜单项目 menu->addChild(itemLabelTTF); //用标签创建菜单项,并且实现显示彩色的文本 CcmenuItemLabel* itemLabelAtlas = CcmenuItemLabel::create( cclabelAtlas::create("123456",'0') ); //添加菜单项 menu->addChild(itemLabelAtlas); //用艺术字体创建菜单项 CcmenuItemLabel* itemLabelBMFont = CcmenuItemLabel::create( cclabelBMFont::create("This is BMFont item","bitmapFontTest.fnt") ); //添加菜单项 menu->addChild(itemLabelBMFont); //用精灵创建菜单项 CcmenuItemSprite* itemSprite = CcmenuItemSprite::create( CCSprite::create("Closenormal.png"),CCSprite::create("CloseSelected.png")); //添加菜单项 menu->addChild(itemSprite); //创建可以来回切换的菜单 //创建菜单项的选项 CcmenuItem* subItem1 = CcmenuItemFont::create("ON"); CcmenuItem* subItem2 = CcmenuItemFont::create("OFF"); CcmenuItem* subItem3 = CcmenuItemFont::create("ON/OFF"); //菜单项中添加选项 CcmenuItemToggle* itemToggle = CcmenuItemToggle::create(subItem1); itemToggle->addSubItem(subItem2); itemToggle->addSubItem(subItem3); //添加菜单项 menu->addChild(itemToggle); //自动对齐菜单项 menu->alignItemsvertically(); //实现菜单出场效果 //第一个菜单从窗口左边进入,第二个从右边进入,以此类推 //创建一个数组保存菜单项 CCArray* arr = menu->getChildren(); CCObject* obj; //用于遍历菜单项 int index = 0; CCARRAY_FOREACH(arr,obj) { //强制类型转换呢(将菜单项的类型转换成相同的类型) CcmenuItem* item = (CcmenuItem*)obj; if (index % 2 == 0) { //设置菜单项的位置(将菜单设置在窗口的最左边) item->setpositionX(item->getpositionX() - winSize.wIDth); //移动菜单(设置菜单从左往右移动) //第一个参数:菜单移动的时间 //第二个参数:菜单移动后的位置 CCMoveBy* moveBy = CCMoveBy::create(10,ccp(winSize.wIDth,0)); item->runAction(moveBy); } else { //把移动到右边 item->setpositionX(item->getpositionX() + winSize.wIDth); //移动菜单(设置菜单从右往左移动) //第一个参数:菜单移动的时间 //第二个参数:菜单移动后的位置 CCMoveBy* moveBy = CCMoveBy::create(10,ccp(-winSize.wIDth,0)); item->runAction(moveBy); } index++; } return true;}
执行结果:
程序实例2:使用菜单和动作的组合实现菜单特效《二》
#include "MenuItem.h"CCScene* MenuItem::scene(){ CCScene* scene = CCScene::create(); MenuItem* layer = MenuItem::create(); scene->addChild(layer); return scene;}bool MenuItem::init(){ //初始化父类层 cclayer::init(); //得到窗口的尺寸 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //创建一个Menu(看不到效果,Menu只是一个容器) Ccmenu* menu = Ccmenu::create(); //添加Menu addChild(menu); //创建一个只显示文本的菜单项 CcmenuItemFont* itemFont = CcmenuItemFont::create("This is Font"); //添加菜单项 menu->addChild(itemFont); //创建一个带有艺术字体的菜单 CcmenuItemAtlasFont* itemAtlas = CcmenuItemAtlasFont::create("123456",CCSprite::create("CloseSelected.png")); //添加菜单项 menu->addChild(itemSprite); //创建可以来回切换的菜单 //创建菜单项的选项 CcmenuItem* subItem1 = CcmenuItemFont::create("ON"); CcmenuItem* subItem2 = CcmenuItemFont::create("OFF"); CcmenuItem* subItem3 = CcmenuItemFont::create("ON/OFF"); //菜单项中添加选项 CcmenuItemToggle* itemToggle = CcmenuItemToggle::create(subItem1); itemToggle->addSubItem(subItem2); itemToggle->addSubItem(subItem3); //添加菜单项 menu->addChild(itemToggle); //自动对齐菜单项 menu->alignItemsvertically(); //实现菜单出场效果 //第一个菜单从窗口左边进入,第二个从右边进入,以此类推 //创建一个数组保存菜单项 CCArray* arr = menu->getChildren(); CCObject* obj; float dt = 2.0f;//用于延迟显示菜单 //用于遍历菜单项 int index = 0; CCARRAY_FOREACH(arr,obj) { //强制类型转换呢(将菜单项的类型转换成相同的类型) CcmenuItem* item = (CcmenuItem*)obj; //创建延迟动作 CCDelayTime* delay = CCDelayTime::create(dt*index); //用于创建d性特效 CCEaseElasticOut* out = NulL; if (index % 2 == 0) { //设置菜单项的位置(将菜单设置在窗口的最左边) item->setpositionX(item->getpositionX() - winSize.wIDth); //移动菜单(设置菜单从左往右移动) //第一个参数:菜单移动的时间 //第二个参数:菜单移动后的位置 CCMoveBy* moveBy = CCMoveBy::create(10,0)); //d性效果 out = CCEaseElasticOut::create(moveBy); } else { //把移动到右边 item->setpositionX(item->getpositionX() + winSize.wIDth); //移动菜单(设置菜单从右往左移动) //第一个参数:菜单移动的时间 //第二个参数:菜单移动后的位置 CCMoveBy* moveBy = CCMoveBy::create(10,0)); //d性效果 out = CCEaseElasticOut::create(moveBy); } //使得菜单项按照一定的顺序执行 CCSequence* seq = CCSequence::create(delay,out,NulL); item->runAction(seq); index++;//遍历菜单项 } return true;}
执行结果:
以上是内存溢出为你收集整理的Cocos2d-X中实现菜单特效全部内容,希望文章能够帮你解决Cocos2d-X中实现菜单特效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)