免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3096 | 回复: 1
打印 上一主题 下一主题

[Android] 【分享】Cocos2dx工具之Cocostudio界面编辑器二 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-05 15:09 |只看该作者 |倒序浏览
(作者:forward)在《【Cocos2dx工具——Cocostudio界面编辑器】一》博客结束的时候,Forward提出两个问题——1、有了编辑好的UI界面之后,我们如何把它们加载到程序中去呢?2、如何使对应的控件具有对应的功能呢?
         带着上面这两个问题,我们开始今天的博客之旅——《【Cocos2dx工具——Cocostudio界面编辑器】二》


一、UI界面的加载
OK,在上一篇博客结束的时候,我们已经用编辑器完成了一个自己的UI,如下图所示:



图 1
首先我们创建一个新的工程——UIEditorDemo。
         从上一节的说明中我们看到,通过Cocostudio的界面编辑器编辑导出我们得出了一个如下图所示的文件结构:



图 2
         好的,下面我们需要的正式这个些资源,将他们拷贝到资源目录下。
         问题来了,有了这些资源与UI界面文件,难道要我们自己去实现解析、UI层级管理、事件响应实现?Cocostudio开发者怎么会这样对我们呢(^_^)?他们已经为我们完成了上述提到问题的解决方案,在Cocostudio官网上,可以找到对应代码下载(CocoGUILIB.zip)
         将对应该的UI层级相关的代码导入我们上面创建的UIEditorDemo工程中,(并按照编译报告添加对应的头文件路径即可)
         完成上面的工作之后,在我们的源文件中添加如下代码:
                   COCOUISYSTEM->resetSystem(this);

                   COCOUISYSTEM->replaceUISceneWithFile(this, "NewProject.json", 1, true, true,true);
         包含对应头文件即可。
         下面就是见证奇迹的时刻——



图 3
         运行程序,我们看到如上图3的运行结果,这不就是我们前天编辑的UI界面吗。不错,加载就是这么简单。

二、UI事件的响应:
加载出我们编辑好的UI界面只是第一步,一个不能响应事件的界面是毫无意义的,接下来我们就需要知道如何让这个界面能够响应我们的操作,来完成玩家的交互。
好的,我们这就进入主题
首先我们需要理解UI层面控件的操作流程——只需要获取UI层面这个控件,给它绑定一个事件的回调,然后在回调函数中实现我们的功能即可
这里我们拿ImageView的点击放大与还原效果来做一次演示,其他类似。
操作ImageView(上面的头像就是使用了ImageView)很简单,代码如下:
           cs::CocoImageView* imageView = (cs::CocoImageView*) (COCOUISYSTEM->getWidgetByName("ImageView_Header"));
           imageView->addPushDownEvent(this, coco_pushselector(HelloWorld::ScaleTo2Size));
           imageView->addReleaseEvent(this, coco_releaseselector(HelloWorld::ScaleResume));
好的,现在我们就需要再添加两个函数ScaleTo2Size和ScaleResume即可,然后这两个函数中分别对这个控件做扩大和还原处理——
voidHelloWorld::ScaleTo2Size(CCObject* pSender)
{
      cs::CocoImageView* imageView = (cs::CocoImageView*) (COCOUISYSTEM->getWidgetByName("ImageView_Header"));
      imageView->setScale(2.0f);
}

voidHelloWorld::ScaleResume(CCObject* pSender)
{
      cs::CocoImageView* imageView = (cs::CocoImageView*) (COCOUISYSTEM->getWidgetByName("ImageView_Header"));
      imageView->setScale(1.0f);
}
如上所示,头像控件的名称Forward已经在UI编辑器中修改为“ImageView_Header”,否会找不到的。
看看效果吧~~
原始头像大小如下:



图 4



图 5
确实按照我们的预期进行了……
在这篇博客中,我们已经解决了在《【Cocos2dx工具——Cocostudio界面编辑器】一》博客末尾提出的两个问题。至此我么可以说是已经做到了“知其然”,但是到底整个CocoGUILIB是如何工作的呢?从文件解析到控件创建,其中的Touch事件又是如何接收与处理呢?CocoGUILIB的结构是什么样子呢?我们现在只是管中窥豹,见其一角,未尽全貌,要是解决了以上提及的问题,或许才可以说“知其所以然”。
对于以上问题,Forward会在《【Cocos2dx工具——Cocostudio界面编辑器】三》中做进一步深入学习与分享~~

论坛徽章:
0
2 [报告]
发表于 2013-12-27 11:28 |只看该作者
提示: 该帖被管理员或版主屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP