Cocos2d-x 3.2 学习笔记(十四)保卫萝卜之界面UI

bool MenuScene :: init()
{
if ( !Layer :: init() )
{
return false ;
} cocos2d ::ui :: Widget* layout = cocostudio ::GUIReader :: getInstance()-> widgetFromJsonFile ("MainUi.json" );
this ->addChild ( layout);
Button * btnAdventure = ( Button*) layout ->getChildByName ( "btnAdventure");
Button * btnBossHome = ( Button*) layout ->getChildByName ( "btnBossHome");
Button * btnBoss = ( Button*) layout ->getChildByName ( "btnBoss");
btnAdventure ->addTouchEventListener ( this, toucheventselector (MenuScene :: btnClick));
btnBossHome ->addTouchEventListener ( this, toucheventselector (MenuScene :: btnClick));
btnBoss ->addTouchEventListener ( this, toucheventselector (MenuScene :: btnClick)); ImageView * cloud1 = ( ImageView*) layout ->getChildByName ( "cloud1");
ImageView * cloud2 = ( ImageView*) layout ->getChildByName ( "cloud2");
Vec2 size = Director ::getInstance ()-> getVisibleSize();
cloud1 ->runAction ( RepeatForever:: create (Sequence :: create( MoveBy ::create ( ,
Vec2 (size . x+ cloud1 ->getCustomSize (). width, )),Place :: create( Vec2 ( , cloud1-> getPositionY ())),nullptr )));
cloud2 ->runAction ( RepeatForever:: create (Sequence :: create( MoveBy ::create ( ,
Vec2 (size . x+ cloud2 ->getCustomSize (). width, )),Place :: create( Vec2 ( , cloud2-> getPositionY ())),nullptr )));
ImageView * bird = ( ImageView*) layout ->getChildByName ( "bird");
bird ->runAction ( RepeatForever:: create (
Sequence ::create (
MoveBy ::create ( , Vec2 ( , )),
MoveBy ::create ( , Vec2 ( ,- )), nullptr ))); ImageView * leaf2 = ( ImageView*) layout ->getChildByName ( "leaf2");
ImageView * leaf3 = ( ImageView*) layout ->getChildByName ( "leaf3");
RotateTo * rotateTo = RotateTo:: create (0.1f , );
RotateTo * rotateTo2 = RotateTo:: create (0.1f , );
leaf2 ->runAction ( RepeatForever:: create (
Sequence ::create (
Repeat ::create ( Sequence:: create (rotateTo , rotateTo2, nullptr ), ),
DelayTime ::create ( ), nullptr )));
leaf3 ->runAction ( RepeatForever:: create (
Sequence ::create (
DelayTime ::create ( ),
Repeat ::create ( Sequence:: create (rotateTo , rotateTo2, nullptr ), ),
DelayTime ::create ( ), nullptr ))); return true ;
}



cocos2d::ui::Widget* layout = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("ThemeUI/ThemeUI.json");
this->addChild(layout);
Button* btnMenu = (Button*)layout->getChildByName("btnMenu");
_btnLeft = (Button*)layout->getChildByName("btnLeft");
_btnRight = (Button*)layout->getChildByName("btnRight");
btnMenu->addTouchEventListener(this,toucheventselector(ThemeScene::btnClickMenu));
_btnLeft->addTouchEventListener(this,toucheventselector(ThemeScene::btnClickLeft));
_btnRight->addTouchEventListener(this,toucheventselector(ThemeScene::btnClickRight));
_pageView = (PageView*)layout->getChildByName("pageView");
_pageView->addEventListenerPageView(this,pagevieweventselector(ThemeScene::pageEvent));
int index = _pageView->getPages().size();
while (index-->)
{
Layout* pageIndex = (Layout*)_pageView->getPage(index);
pageIndex->setUserData((int*)index);
pageIndex->addTouchEventListener(this,toucheventselector(ThemeScene::layputEvent));
}
changePage( );
void ThemeScene::btnClickLeft(Button* btn, TouchEventType eventType)
{
if( eventType == TOUCH_EVENT_ENDED )
{
auto nextPage = _pageView->getCurPageIndex() - ;
changePage( nextPage );
}
} void ThemeScene::btnClickRight(Button* btn, TouchEventType eventType)
{
if( eventType == TOUCH_EVENT_ENDED )
{
auto nextPage = _pageView->getCurPageIndex() + ;
changePage( nextPage );
}
} void ThemeScene::changePage( int index )
{
auto totalPage = _pageView->getPages().size();
_btnLeft->setVisible( index != );
_btnRight->setVisible( index != ( totalPage- ) ); if( index == _pageView->getCurPageIndex() ) return; if( index >= && index <= totalPage- )
{
_pageView->scrollToPage( index );
}
} void ThemeScene::pageEvent(Ref* page,PageViewEventType type)
{
log("EventType");
changePage( _pageView->getCurPageIndex() );
}
enum MapType
{
Sky_Type,
Forest_Type,
Desert_Type,
Seabed_Type,
Max_Type
};
void ThemeScene::layputEvent(Layout* layout, TouchEventType eventType)
{
if( eventType == TOUCH_EVENT_ENDED )
{
int sign = (int)layout->getUserData();
log("layputEvent %d",(int)layout->getUserData());
if( sign >= && sign < MapType::Max_Type )
{
auto type = MapType((int)layout->getUserData());
SelectMapModel::getInstance()->setmapType(type);
Director::getInstance()->replaceScene(SelectMapUI::createScene());
}
else
{
log("not open");
}
}
}




_pageView = (PageView*)layout->getChildByName("panelSky")->getChildByName("pageView");
Layout* item = (Layout*)_pageView->getChildByName("pageItem");
item->removeFromParent();
_pageView->removeAllPages();
int count = SelectMapModel::getInstance()->getMapCount(SelectMapModel::getInstance()->getmapType());
for (int idx = ; idx <= count; idx++)
{
createOnlyPage(_pageView,item,idx);
}
void SelectMapUI::createOnlyPage(PageView* page,Layout* item, int idx)
{
std::string url = SelectMapModel::getInstance()->getMapResPath(SelectMapModel::getInstance()->getmapType());
ImageView* mapImg = (ImageView*)item->getChildByName("mapImg");
ImageView* towers = (ImageView*)item->getChildByName("towers");
mapImg->loadTexture(url+StringUtil::combination("ss_map%02d.png",idx));
towers->loadTexture(url+StringUtil::combination("ss_towers_%02d.png",idx));
page->addPage((Layout*)item->clone());
}
void SelectMapUI::btnClick(Button* btn, TouchEventType eventType)
{
if( eventType == TOUCH_EVENT_ENDED )
{
log("click btn is %s",btn->getName().c_str());
int sceneID = _pageView->getCurPageIndex() + ;
SceneMgr::getInstance()->replaceScene(sceneID);
}
}

Cocos2d-x 3.2 学习笔记(十四)保卫萝卜之界面UI的更多相关文章
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- (C/C++学习笔记) 十四. 动态分配
十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...
- SharpGL学习笔记(十四) 材质:十二个材质球
材质颜色 OpenGL用材料对光的红.绿.蓝三原色的反射率来近似定义材料的颜色.象光源一样,材料颜色也分成环境.漫反射和镜面反射成分,它们决定了材料对环境光.漫反射光和镜面反射光的反射程度.在进行光照 ...
- 【转】angular学习笔记(十四)-$watch(1)
本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...
- angular学习笔记(十四)-$watch(1)
本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...
- MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)
知识点十五:MySQL 的应用程序优化(32) 一.访问数据库采用连接池 把连接当做对象或设备,统一放在‘连接池’里.凡是需要访问数据库的地方都从连接池里取连接 二.采用缓存减少对于MySQL的访问: ...
- Swift学习笔记十四:构造(Initialization)
类和结构体在实例创建时,必须为全部存储型属性设置合适的初始值. 存储型属性的值不能处于一个未知的状态. 你能够在构造器中为存储型属性赋初值,也能够在定义属性时为其设置默认值.下面章节 ...
- JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)
1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...
- Oracle学习笔记十四 内置程序包
扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...
随机推荐
- QQ在线客服设置
QQ在线客服设置 1.客户在添加QQ在线客服后,需要让用户在线不需要添加为好友就能在线对话,一般默认设置下会显示"您需要添加对方为好友+才能给对方发送会话消息",具体解决方法如下: ...
- JAVA学习博客---2015-8
八月份的学习博客,今天已经是九月四号了,补上吧.现在我又回到C++了,JAVA的基本的东西都懂了,但是更好的掌握JAVA,我必须原路返回去学习C++,当初为了更快的学JAVA,其实我得C++都是跳着看 ...
- java 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
参考文章:http://ifeve.com/java-concurrency-thread-directory/ 其中的竞态,线程安全,内存模型,线程间的通信,java ThreadLocal类小节部 ...
- ajax跟取后台 josn 之 josn理解
json是一种轻量级的数据交换格式,是 JavaScript 原生格式,是理想的数据交换格式. 1.json对象json对象以“{”开始 , 以“}”结束,每个“名称”后跟一个“:”(冒号),‘名:值 ...
- sqlserver 读取xml 字符串方法
declare @xml xml declare @propertyName varchar(50) declare @str nvarchar(max) set @propertyName = ...
- 使用Immutable优化复制注意事项
这是Orleans中对于序列化检查类型是否支持Orleans内置的高速序列化时,使用Immutable<>包装和类型声明时,有ImmutableAttribute,效果是一样的.所以无需重 ...
- CentOs 7怎么联网
在安装好Centos7后,网络还不能正常使用,需要我们手动配置.并且Linux的网络配置并不太容易,新手经常不知道从何开始.为了解决这个令大家头疼的问题,我在此将成功的配置过程与大家分享.希望大家都能 ...
- QQ揭秘:如何实现托盘闪动消息提醒?【低调赠送:QQ高仿版GG 4.1 最新源码】
当QQ收到好友的消息时,托盘的图标会变成好友的头像,并闪动起来,点击托盘,就会弹出与好友的聊天框,随即,托盘恢复成QQ的图标,不再闪动.当然,如果还有其它的好友的消息没有提取,托盘的图标会变成另一个好 ...
- objective-c(继承)
objective-c的继承给出基础例子及注意点: 定义并实现基类ClassA #import <Foundation/Foundation.h> @interface ClassA : ...
- dijit样式定制(三)Button、RadioButton、CheckBox
dijit.form.DropDownButton dijit的button中除了ComboButton使用table布局外,其他的button都是用span嵌套布局,下图中可看一下button的主要 ...