Cocos2d-x新UI解决方案的使用

参考了几篇文章:

http://io.diveinedu.com/2015/01/13/Cocos2d-3.x%E4%B8%ADButton%E7%9A%84%E4%BD%BF%E7%94%A8.html

http://www.cocos2d-x.org/wiki/UI#Label

说实话,官方文档不是很好,很多库的使用方法都没有提到,从官方示例项目中找的代码也是添加了很多依赖的,稍微不注意一点就踩坑。

使用Button正如第一篇文章所说的那样:

 1 #ifndef __THIRD_SCENE_H__
 2 #define __THIRD_SCENE_H__
 3
 4 #include "cocos2d.h"
 5 #include "ui/CocosGUI.h"
 6
 7 class UIScene : public cocos2d::Layer{
 8 public:
 9     static cocos2d::Scene* createScene();
10     virtual bool init();
11     void touchEvent(Ref *pSender, cocos2d::ui::Widget::TouchEventType type);
12     CREATE_FUNC(UIScene);
13 };
14
15 #endif //__THIRD_SCENE_H__

然后再cpp中就可以:

 1 #include "UIScene.h"
 2 #include "HelloWorldScene.h"
 3
 4 USING_NS_CC;
 5
 6 Scene* UIScene::createScene(){
 7     auto scene = Scene::create();
 8     auto layer = UIScene::create();
 9     scene->addChild(layer);
10     return scene;
11 }
12
13 bool UIScene::init(){
14     if (!Layer::init()){
15         return false;
16     }
17
18     auto btn = ui::Button::create("CloseNormal.png", "CloseSelected.png");
19     btn->setTitleText("TextButton");
20     btn->setPosition(Vec2(150,100));
21     btn->addTouchEventListener(CC_CALLBACK_2(UIScene::touchEvent,this));
22     this->addChild(btn);
23     return true;
24 }
25
26 void UIScene::touchEvent(Ref *pSender, ui::Widget::TouchEventType type){
27     Director::getInstance()->end();
28 }

使用CheckBox的话监听回调函数就需要不一样的参数了:

 1 #include "UIScene.h"
 2
 3 USING_NS_CC;
 4
 5 Scene* UIScene::createScene(){
 6     auto scene = Scene::create();
 7     auto layer = UIScene::create();
 8     scene->addChild(layer);
 9     return scene;
10 }
11
12 bool UIScene::init(){
13     if (!Layer::init()){
14         return false;
15     }
16
17     auto check = ui::CheckBox::create("check_box_normal.png",
18         "check_box_normal_press.png",
19         "check_box_active.png",
20         "check_box_normal_disable.png",
21         "check_box_active_disable.png");
22     check->setPosition(Vec2(240, 160));
23     check->addEventListener(CC_CALLBACK_2(UIScene::selectedEvent, this));
24     this->addChild(check);
25
26     return true;
27 }
28
29 void UIScene::selectedEvent(Ref* pSender, ui::CheckBox::EventType type){
30 //    Director::getInstance()->end();
31 }

Slider和LoadingBar都没做出来,就是看不出效果,看来文档也不靠谱。

 1 #include "UIScene.h"
 2
 3 USING_NS_CC;
 4 using namespace cocos2d::ui;
 5
 6 Scene* UIScene::createScene(){
 7     auto scene = Scene::create();
 8     auto layer = UIScene::create();
 9     scene->addChild(layer);
10     return scene;
11 }
12
13 bool UIScene::init(){
14     if (!Layer::init()){
15         return false;
16     }
17
18     auto slider = Slider::create();
19     slider->loadBarTexture("sliderTrack.png");
20     slider->loadSlidBallTextures("sliderThumb.png", "sliderThumb.png", "");
21     slider->loadProgressBarTexture("sliderProgress.png");
22     slider->setPosition(Vec2(240, 160));
23     slider->addEventListener(CC_CALLBACK_2(UIScene::sliderEvent, this));
24     this->addChild(slider);
25
26     return true;
27 }
28
29 void UIScene::sliderEvent(Ref *pSender, Slider::EventType type){
30 }

LoadingBar连显示都显示不出来,就不贴了。

ImageView的创建和一般的图片精灵一样:

 1 bool UIScene::init(){
 2     if (!Layer::init()){
 3         return false;
 4     }
 5
 6     auto imageView = ImageView::create("HelloWorld.png");;
 7     imageView->setPosition(Vec2(240, 160));
 8     this->addChild(imageView);
 9
10     return true;
11 }

据传说ImageView是可以使用PLISH图像的,但是没测试。

Text类似Label,但是只是TTF的Label:

 1 bool UIScene::init(){
 2     if (!Layer::init()){
 3         return false;
 4     }
 5
 6     auto text = Text::create("Text UI","fonts/arial.ttf",40);
 7     text->setPosition(Vec2(240, 160));
 8     this->addChild(text);
 9
10     return true;
11 }

TextBMFont和TextAtlas没试,但那时看示例和一般的BMFLabel等相同。

RichText和TextField暂时用不上,也没看。

时间: 2024-10-16 12:20:11

Cocos2d-x新UI解决方案的使用的相关文章

Unity4.6新UI系统初探(uGUI)

一.引言 Unity终于在即将到来的4.6版本内集成了所见即所得的UI解决方案(视频).事实上从近几个版本开始,Unity就在为这套系统做技术扩展,以保证最终能实现较理想的UI系统.本文试图通过初步的介绍和试用,让读者对这套系统有大体的了解,以便更进一步评估这套UI系统好不好用,适合用在什么项目.为了避免坑挖太深,更进一步的试用和评估我将在<用uGUI开发自定义Toggle Slider控件>中进行论述.为论述方便,下文将这套New UI System简称为uGUI,并且以X-UI指代现有第三

Android Material Design新UI控件使用大全 二

序言 上一篇中我们介绍了几个简单的新UI控件,相信很多小伙伴对Materil Design的视觉效果有了一定的了解,今天我们就继续介绍其他几个控件的玩儿法,让我们一探Materil Design的究竟,我们先来看一下我们今天要介绍的CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout及TabLayout, ok,我们接下来就逐一对这些控件进行解析,揭开他们神秘的面纱,来为我们服务,Let's Go. TabLayout 我们先来看官方的介绍

高仿网易4.0新UI框架

高仿网易4.0新UI框架 新的抽屉效果,修改于SliderViewController,首页滑动导航菜单随scrollView 的滑动变化效果. 下载地址:http://www.devstore.cn/code/info/500.html 运行截图:   热门源码下载: 高仿京东商城 Android快速开发不可或缺的11个工具类 Android快速开发框架LoonAndroid Android应用源码比较不错的新闻客户端 版权声明:本文为博主原创文章,未经博主允许不得转载.

高仿网易4.0新UI框架的Demo

NewsFourApp:一个模仿网易4.0新UI框架的开源项目. 声明:如果有好的修改,非常欢迎fork提交分享哈 —————————————-华丽丽的分割线——————————————— beta 0.2 —————————————-华丽丽的分割线——————————————— beta 0.1 1.新的抽屉效果,修改于SliderViewController,不过里面已经不一样,毕竟是新的效果嘛(此部分还不算完全具备框架的特性,呵呵??) 2.首页滑动导航菜单的字体大小和颜色,随scroll

(十)Unity5.0新特性------新UI系统实战

原文 Unity New GUI Tutorial – Part 1 Unity New GUI Tutorial- Part 2 Unity New GUI Tutorial – Part 3 大家可以看看他的游戏源代码,然后了解一下新UI的使用.  介绍的很详细: 需要指出的 UI的动画都是使用 Animator\Animation组件实现,在实际的项目开发中,会使用Dotween\  Dftween这些补间动画插件来实现.   用代码通知,更加灵活. 但是使用 Animator\Anima

【IOS源码】高仿网易4.0新UI框架

高仿网易4.0新UI框架 新的抽屉效果,修改于SliderViewController,首页滑动导航菜单随scrollView 的滑动变化效果. 下载地址: http://www.dwz.cn/yKQbV 效果图  

Android Material Design新UI控件使用大全 一

序言 自从谷歌在2014年的IO大会上推出了Material Design新的设计规范后,安卓应用的整体美观程度提升了很大的一个层次, 安卓再也不是又黑又丑的界面,取而代之的是拥有丰富的颜色,美观的按钮,好的用户体验;但是刚开始的话这种设计规范只能在Android 5.0以上的手机上运行,导致开发者也只是自己去体验,在国内并没有大范围的推广,App的质量并不能大幅度的提升,但是作为改变世界的Google公司不久就推出了兼容库Android Material Design,这绝对是业界良心了,我们

Unity 新UI事件系统(EventSystem) Demo

新的UI系统消息传递被全新设计,该系统用MonoBehaviour 来实现自定义的接口,以便可以接受来自消息系统的回调.当一个对象被消息的执行指定,那么这个对象的所有实现了自定义接口的脚本将被通知,指定的方法将被执行. 1.定义一个接口ICustomMessageTarget继承IEventSystemHandler, 这样当发送此类型消息时,实现此接口的脚本所在的对象将会被通知. using UnityEngine; using UnityEngine.EventSystems; using

精品软件 推荐 瑞星个人防火墙V16 新UI、新功能、新体验

现在主流的防火墙软件基本不更新了,因为微软自带的防火墙已经基本够用了.不过瑞星个人防火墙存在中,很值得点赞.所以今天分享一下. 上载地址当然官方了:http://pc.rising.com.cn/rfw/V16.html