Cocos2d-X中实现菜单特效

Cocos2d-X中实现菜单特效,第1张

概述Cocos2d-X中可以讲菜单和动作结合起来使用实现菜单特效 程序实例1:使用菜单和动作的组合实现菜单特效《一》 #include "MenuItem.h"CCScene* MenuItem::scene(){ CCScene* scene = CCScene::create(); MenuItem* layer = MenuItem::create();

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中实现菜单特效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存