Cocos2d-x 自己对某场景思路整理
2016-03-11 00:30
393 查看
摘要:
在这个场景中,菜单项目MenuItem有三个,主要是返回按钮(右上角的×)和向左向右翻的两个箭头。
在该场景初始化成员函数中,首先从TEXTURE Package中打包好的文件中加载图片的缓存(创建精灵),然后设置背景精灵的位置,并把该背景精灵添加到该MJLayer层中;
然后,秘籍技能界面,同样是基于打包好的缓存来加载图片,以此创建相应精灵,注意使用的API,设置位置等;
注意:interface_1->setVisible(true);为什么这里设置成了true,flag有什么作用,箭头按钮是翻页的
flag = true;
// 切换按钮
最后,创建好的MenuItem精灵等要加载到Menu菜单中,调用的API为auto menu = Menu::create(closeItem, nextRightItem, nextLeftItem, NULL);
注意:不熟系的类成员函数,或者各种宏定义,只要不懂都要查看下★定义★
REF: 代码参考jikexueyuan.com视频教程,整理by:IFuMI
在这个场景中,菜单项目MenuItem有三个,主要是返回按钮(右上角的×)和向左向右翻的两个箭头。
在该场景初始化成员函数中,首先从TEXTURE Package中打包好的文件中加载图片的缓存(创建精灵),然后设置背景精灵的位置,并把该背景精灵添加到该MJLayer层中;
然后,秘籍技能界面,同样是基于打包好的缓存来加载图片,以此创建相应精灵,注意使用的API,设置位置等;
注意:interface_1->setVisible(true);为什么这里设置成了true,flag有什么作用,箭头按钮是翻页的
flag = true;
// 切换按钮
flag = true; // 切换按钮 auto nextRightItem = MenuItemSprite::create( Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnNormal.png")), Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnSelected.png")), [&](Ref* ref){ PLAYEFFECT; if (flag) { interface_2->setVisible(true); flag = false; } else { interface_2->setVisible(false); flag = true; } });
最后,创建好的MenuItem精灵等要加载到Menu菜单中,调用的API为auto menu = Menu::create(closeItem, nextRightItem, nextLeftItem, NULL);
注意:不熟系的类成员函数,或者各种宏定义,只要不懂都要查看下★定义★
include "cocos2d.h" #include "extensions/cocos-ext.h" #include "MJLayer.h" #include "GlobalDefine.h" #include "StartLayer.h" using namespace cocos2d::extension; using namespace cocos2d; Scene* MJLayer::createScene() { Scene* scene = Scene::create();// Layer* layer = MJLayer::create(); scene->addChild(layer); return scene; } bool MJLayer::init() { if (!Layer::init())// return false; // 背景 spriteBG = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("CheatsBackground.png")); spriteBG->setPosition(WINSIZE.width / 2, WINSIZE.height / 2); this->addChild(spriteBG); // 秘籍技能界面 interface_1 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("CheatsInterface1.png")); interface_2 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("CheatsInterface2.png")); interface_1->setPosition(WINSIZE.width / 2, WINSIZE.height / 2 - 10); interface_1->setVisible(true); interface_2->setPosition(WINSIZE.width / 2, WINSIZE.height / 2 - 10); interface_2->setVisible(false); spriteBG->addChild(interface_1); spriteBG->addChild(interface_2); // 关闭按钮 //static MenuItemSprite * create(Node* normalSprite, Node* selectedSprite, Node* disabledSprite = nullptr); auto closeItem = MenuItemSprite::create( Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("OffNormal.png")), Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("OffSelected.png")), [](Ref *ref){ PLAYEFFECT; Director::getInstance()->replaceScene(StartLayer::createScene()); } ); closeItem->setPosition(WINSIZE.width - 164, WINSIZE.height - 132); flag = true; // 切换按钮 auto nextRightItem = MenuItemSprite::create( Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnNormal.png")), Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnSelected.png")), [&](Ref* ref){ PLAYEFFECT; if (flag) { interface_2->setVisible(true); flag = false; } else { interface_2->setVisible(false); flag = true; } }); nextRightItem->setPosition(WINSIZE.width-55, WINSIZE.height/2 -14); // 点击切换按钮 auto nor = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnNormal.png")); nor->setFlippedX(true); auto sel = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnSelected.png")); sel->setFlippedX(true); auto nextLeftItem = MenuItemSprite::create( Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnNormal.png")), Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PageTurnSelected.png")), [&](Ref *ref){ PLAYEFFECT; if (flag) { interface_1->setVisible(true); flag = false; } else { interface_1->setVisible(false); flag = true; } }); nextRightItem->setPosition(55, WINSIZE.height / 2 - 14); auto menu = Menu::create(closeItem, nextRightItem, nextLeftItem, NULL); menu->setPosition(Point::ZERO); return true; }
REF: 代码参考jikexueyuan.com视频教程,整理by:IFuMI
相关文章推荐
- Cocos2d入门--1--初涉相关属性或代码
- Cocos2d入门--3--向量的应用
- Cocos2d入门--2--三角函数的应用
- Cocos2d-X-3.0之后的版本的环境搭建
- Cocos2d入门--3--小球运动
- Cocos2d入门--1--初涉相关属性或代码
- Cocos2d入门--3--向量的应用
- Cocos2d入门--2--三角函数的应用
- Cocos2d-X-3.0之后的版本的环境搭建
- Cocos2d入门--3--小球运动
- Cocos2dx WebSocket的使用
- COCOS学习笔记--Menu菜单系统
- cocos2d-x编译问题集合之error C2440: “类型转换”: 无法从“void (__thiscall ::* )(void)”转换为“
- cocos2d-x之物理引擎之碰撞监测
- cocos2d-x之物理引擎初试
- 2dx 算两个点之间的角度
- 2dx 改变动画 ac32 速率
- cocos2dx ListView 动态加载(代码)
- cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(7)
- cocos2dx中使用JPG图和只带Alpha的PNG图合成渲染