Quick-Cocos2d-x学习手册(二): 纯Lua实现CocoStudioGUI布局
来源:互联网 发布:c语言中\n是什么意思 编辑:程序博客网 时间:2024/06/07 04:47
本文主要介绍如何用Lua创建CocoStudioGUI,并实现各种布局方式。
此文中,将用CocoStudio的UI编辑器制作、并能导入Cocos2d-x中使用的UI系统,称为CocoStudioGUI。以区别于Cocos2d-x中不完善的CC前缀UI系统。
就目前来说CocoStudioGUI当属所有Cocos UI系统中最佳的选择。
作为Cocos2d-x内置的完整UI系统,它必然有着最大的用户群体,可以认为它经受住了严格的测试;
CocoStudioGUI可在编辑器中制作,这表示它的各属性已经在内部处理好依赖关系,任何的setter调用次序都不会有任何问题;
使用CocoStudioGUI的工作流,能得到最高的开发效率。
考虑到Quick框架仍然处于不稳定开发状态,但其中的Cocos2d-x部分确是较为稳定的。因此个人认为使用CocoStudioGUI要优于quick自己的一套cc.ui.*包。
此文的内容介于基本控件和高级容器控件之间,通过例子,讲解容器控件UILayout的布局方式。
布局方式是制作前端界面的关键。浮动控件,变长控件列表以及UI屏幕适应都与此有关。理解不清楚CocoStudio的布局方式,后面的事情会很难做 ,甚至造成前期UI返工。因此专门测试其玩法,我也会比较放心。
基础容器UILayout
首先要建立一个容器控件,UILayout是最基本的容器类。在后面的例子中,它是场景居中的白色区域
local panel = Layout:create()
panel:setAnchorPoint(CCPoint(0, 0))
panel:setPosition(CCPoint(80, 80))
panel:setSize(CCSize(480-160, 320-160))
panel:setBackGroundColorType(LAYOUT_COLOR_SOLID)
panel:setBackGroundColor(ccc3(240, 240, 240))
panel:setLayoutType(LAYOUT_ABSOLUTE)
uiLayer:addChild(panel)
UILayout绝对布局
确保上述UILayout设置为水平模式
panel:setLayoutType(LAYOUT_LINEAR_HORIZONTAL)
添加三个子级图片
for
i=1,3
do
local img = ImageView:create()
img:loadTexture(
"40.png"
)
panel:addChild(img)
img:setPosition(ccp(40 * i, 40 * i))
end
效果如图:
UILayout水平布局
仅需修改panel:setLayoutType(…) 这行代码为
panel:setLayoutType(LAYOUT_LINEAR_HORIZONTAL)
大家会发现此时img:setPosition的调用变得不起作用了:
UILayout从垂直布局
和上面一样,只需修改panel的布局模式
panel:setLayoutType(LAYOUT_LINEAR_VERTICAL)
UILayout相对布局
首先将panel改为相对布局模式
panel:setLayoutType(LAYOUT_LINEAR_VERTICAL)
但是,在设置字控件的布局参数时遇到了问题
local img = ImageView:create()
img:loadTexture(
"40.png"
)
local layoutParam = UIRelativeLayoutParameter:create()
layoutParam:setAlign(RELATIVE_ALIGN_PARENT_TOP_RIGHT)
img:setLayoutParameter(layoutParam)
panel:addChild(img)
layoutParam:setAlign(…) 参数需要时一个UIRelativeAlign(C++中被typedef过的枚举),但是实际的枚举项RELATIVE-ALIGN-PARENT-TOP-RIGHT已被tolua转换为一个number。造成类型不匹配报错。
此问题有两种解法:
回避掉代码书写的方式,直接用CocoStudio的UI编辑器来设置好相对坐标
理解typedef枚举的转换方式。
推荐阅读:
Quick-Cocos2d-x 生存手册(一):游戏元素
来源网址:http://www.lolofinil.com/2014/07/09/icocos_02/#textlogo
- Quick-Cocos2d-x学习手册(二): 纯Lua实现CocoStudioGUI布局
- quick lua cocos2d-x 屏幕 旋转 布局
- Quick-Cocos2d-x 学习手册(一):游戏元素
- lua QUICK-COCOS2D-X
- Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(二)
- [quick-cocos2d-x lua学习] 框架详细介绍(二) 核心framework
- Cocos2d-Lua(Quick-Cocos2d-x)内存释放
- Cocos2d-Lua(Quick-Cocos2d-x)内存优化
- Cocos2d-Lua(Quick-Cocos2d-x)内存释放
- Cocos2d-X 中quick----lua的跳转场景的实现
- quick-cocos2d-x lua中碰撞检测的实现
- quick Cocos2d-x lua 八方向摇杆代码实现
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(二)新建项目中配制环境
- [quick-cocos2d-x lua学习] 框架详细介绍(一)
- [quick-cocos2d-x lua学习] 让游戏竖屏显示
- quick-cocos2d-x 学习系列之十lua调用JAVA
- quick-cocos2d-x(lua) 拖动精灵使其在屏幕移动的效果实现
- lua、quick-cocos2d-x(lua)、lua基本语法、lua类的实现、lua类的继承【新手必读】
- 解题报告二
- BMI小项目总结
- Ubuntu Grub安装的两个问题(windows 7 下双系统)
- 【web前端】IE浏览器兼容问题
- 了解 uiautomatorviewer 新增的 dump --compressed 功能
- Quick-Cocos2d-x学习手册(二): 纯Lua实现CocoStudioGUI布局
- 基于lucene的案例开发:Query查询
- 网络编程-ARP
- cocos2d-x 之 CCArray 源码分析
- 【每日一水】toj1038
- 在Ubuntu 12.04 LTS上安装wireshark
- 【翻译原创】(三)MonkeyTalk 用户手册 - IDE 及 Agent 的安装
- Quick-Cocos2d-x UI容器项拷贝
- mysql数据类型