Cocos2d-X中实现菜单特效
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", "labelatlasimg.png", 24, 32, '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", "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", "labelatlasimg.png", 24, 32, '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;
float dt = 2.0f;//用于延迟显示菜单 //用于遍历菜单项
int index = 0; CCARRAY_FOREACH(arr, obj)
{
//强制类型转换呢(将菜单项的类型转换成同样的类型)
CCMenuItem* item = (CCMenuItem*)obj; //创建延迟动作
CCDelayTime* delay = CCDelayTime::create(dt*index); //用于创建弹性特效
CCEaseElasticOut* out = NULL; if (index % 2 == 0)
{
//设置菜单项的位置(将菜单设置在窗体的最左边)
item->setPositionX(item->getPositionX() - winSize.width); //移动菜单(设置菜单从左往右移动)
//第一个參数:菜单移动的时间
//第二个參数:菜单移动后的位置
CCMoveBy* moveBy = CCMoveBy::create(10, ccp(winSize.width, 0)); //弹性效果
out = CCEaseElasticOut::create(moveBy);
}
else
{
//把移动到右边
item->setPositionX(item->getPositionX() + winSize.width); //移动菜单(设置菜单从右往左移动)
//第一个參数:菜单移动的时间
//第二个參数:菜单移动后的位置
CCMoveBy* moveBy = CCMoveBy::create(10, ccp(-winSize.width, 0)); //弹性效果
out = CCEaseElasticOut::create(moveBy);
} //使得菜单项依照一定的顺序运行
CCSequence* seq = CCSequence::create(delay, out, NULL);
item->runAction(seq);
index++;//遍历菜单项
} return true;
}
运行结果:
Cocos2d-X中实现菜单特效的更多相关文章
- ASP.NET MVC搭建项目后台UI框架—2、菜单特效
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- JavaScript实战-菜单特效
以下是我自己用原生JS写的各种菜单特效,虽然网上一搜一大堆,但我还是喜欢自己来写一写! 这是上一篇:JavaScript实战(带收放动画效果的导航菜单) 下面是经过优化后的完整代码,优化了CSS样式. ...
- CSS3超酷移动手机滑动隐藏側边栏菜单特效
这是一组共4种效果很炫酷的CSS3移动手机滑动隐藏側边栏菜单特效. 这四种效果各自是:默认的点击滑动側边栏菜单效果.带3D transforms的滑动側边栏效果.文字缩放和淡入淡出效果的滑动側边栏以及 ...
- Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如 ...
- Cocos2d-x Lua中实例:特效演示
下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜 ...
- android中常用菜单(menu)的基本知识
(一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...
- 一款jQuery立体感动态下拉导航菜单特效
一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效. 对IE6都是兼容的,希望大家好好研究研究. 适用浏览器:IE6.IE7.IE ...
- 一款jquery编写图文下拉二级导航菜单特效
一款jquery编写图文下拉二级导航菜单特效,效果非常简洁大气,很不错的一款jquery导航菜单特效. 这款jquery特效适用于很多的个人和门户网站. 适用浏览器:IE8.360.FireFox.C ...
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
随机推荐
- Git的一些用法(建立新的branch)
建立新的branch和查看全部的branch(kk的代码是基于现有的branch) 切换到branch kk: 当然我们也能够在android studio里操作: 注意切换的时候代码会丢失,必须先c ...
- [think in java]知识点学习
java中 全部数值都有正负号,不存在无符号整数. java中的基本类型存储在堆栈中. 其它对象存储在堆中. java确保数组会被初始化,并且不能在它的范围之外被訪问. 下面代码在c和c++中是合法的 ...
- 笔记--cocos2d-x 3.0 环境搭建
一.下载资源工具 1.下载cocos2d-x 3.0 官网地址:http://www.cocos2d-x.org/filedown/cocos2d-x-3.0-cn 2.下载VS2012 地址网上搜 ...
- 奇妙的go语言(聊天室的开发)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 这是一篇关于聊天室开发的博客,原来文章的地址来自于此.这篇文章非常具有代表性,对于代码中的函数 ...
- jquery selector
jquery的选择器功能 1 :lt(index) selector 一组元素选择index之前的元素,若index<0 则倒着选过来 http://api.jquery.com/lt-sele ...
- android——屏幕适配大全(转载)
http://my.oschina.net/u/2008084/blog/496161 一.适配可行性 早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有 ...
- Mysql 复制表结构 及其表的内容
顺便转一下Mysql复制表结构.表数据的方法: 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们 ...
- container宽度
bootstrap:宽度太宽时无需改变container的宽度大小,只需:.row{margin-left: 30px;margin-right: 30px;}
- IT定理:摩尔定理,安迪-比尔定理,反摩尔定理
前两天在网上不经意间搜到了一本吴军的<浪潮之巅>,讲的是现代国际上计算机界的各大公司的兴衰沉浮,包括AT&T公司与IBM等等,把它当作IT历史书看,到现在已经看了一部分了.其中,我 ...
- FLASH图片上传功能—从百度编辑器UEditor里面提取出来
为了记录工作中碰到的各种问题,以及学习资料整理,今天开始,将以往的文章进行了一个整理,以后也开始认真的记录学习过程中的各种问题 在HTML里面的文件上传功能一直是个问题,为了实现上传文件大小限制,怎样 ...