CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件
1、概述
我们有了UI交互、有了动画人物、有了物理模拟,还差最后一步——将这些元素融合起来。这就要用到cocoStudio中的场景编辑器了。这次我们要将先前我们做过的所有东西都放到一个场景中去。这项工程比看起来是要简单。
2、创建场景
运行CocoStudio,选择SceneEditor。进入后创建一个新的工程:MyScene。然后找到先前我们制作的UI部分的导出资源、动画部分的导出资源,将其复制到这个场景工程的Resource文件夹下。
资源准备完成,我们就可以开始制作场景了。制作比较简单,就是拖拖拽拽。先更改场景大小为1024x768。动画是骨骼组件、UI是UI组件。另外,我还拖进去一个粒子。制作完成后可以点击播放看到模拟器运行的效果。一切ok后导出文件。
3、关联程序
3.1大体思路
我们使用SceneReader中的一个初始化函数来加载导出的场景文件。返回值是一个Node。场景中的每一个功能单元也都是一个Node,它们是这个根Node的子节点。这些子Node上附加了很多组件(component)。这些component就是我们之前编辑的各种功能了。比如动画、UI、粒子、声音、自定义属性等等。我们如果想要取到某一个component,我们就首先要找到这个子Node,然后在它上面找到相应的component,最后对它进行操作。
3.2载入场景、获取组件
首先,我们运行脚本创建一个新工程:testScene。编译运行,确保创建正确后,将刚才导出的文件复制到Resource中。 下面这段代码,展示了如何创建场景与获取组件:
//……
auto node = SceneReader::getInstance()->createNodeWithSceneFile("MyScene.json");
if(node)
{
addChild(node);
} /////////////////////////////////
auto child = node->getChildByTag();
auto reader = (ComRender*)child->getComponent("GUIComponent");
auto layer = (UILayer*)reader->getNode();
<span style="white-space:pre"> </span>m_layout = (Layout*)layer->getWidgetByName("Panel");
//……
其中,ComRender是一个component的包装,通过它的getNode方法能够取到我们需要的UILayer。然后我们再通过名字取到具体的layout。接下来,就与之前的关联方式相同了。
3.3物理场景
物理场景没有任何变化,先前的创建方式完全能够兼容。因为场景编辑器导出的也只是一个Node罢了,不会影响外层的Layer。 接下来的具体的关联逻辑可以看前几篇博客。代码比较多,而且都是复制粘贴比较无脑,就不复述了。也可以看文章下面提供的Demo。
4、总结
通过场景编辑器,可以将先前在CocoStudio中制作的元素可视化的放到一个Node中。其意义也在于可以将程序与美术的工作分离开来。导出的文件在程序中创建成一个有众多子节点的Node,每一个Node上都挂有自己特色的component。存在的问题之前也提到过,就是没有一个统一的导出文件做索引,作为标志的tag不是自动管理的,可能会产生些问题。
CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件的更多相关文章
- CocoStudio基础教程(6)使用CocoStudio编辑帧事件并关联到程序
1.概述 帧事件也是新加入的功能.这篇中我们将看到如何使用它.我们将上篇中制作的动画稍加修改. 2.用途与原理 首先介绍一下帧事件.正如其名:一个与帧相关联的事件. 为什么要这么做呢?首先没人想做一大 ...
- CocoStudio基础教程(3)在程序中处理cocoStudio导出动画
1.概述 使用cocoStudio可以方便的制作动画,接下来的工作就是在我们的程序中使用制作的动画.这篇中,我将使用程序将两个动画连接起来 2.关联到项目 运行脚本创建我们的项目,将导出的动画.UI放 ...
- CocoStudio基础教程(2)关联程序逻辑与cocoStudio导出文件
1.概述 上篇说到将CocoStudio的导出文件在程序中运行出来,但是并没有用户交互,即点击响应,程序的逻辑判断也都没有.这篇中我们把它们加进去,这样就可以算一个完整的程序了. 2.界面编辑 大部分 ...
- CocoStudio基础教程(1)创建UI并载入到程序中
1.概述 CocoStudio的使用无疑是cocos2d-x 3.0的重要组成部分,接下来我们用它来创建一组UI,并将其读入到程序中显示出来.先上效果图: 2.导出 在导出之前,最好先创建一个新的工程 ...
- CocoStudio基础教程(4)骨骼动画的动态换肤
1.概述 游戏中人物的状态会发生改变,而这种改变通常要通过局部的变化来表现出来.比如获得一件装备后人物形象的改变,或者战斗中武器.防具的损坏等.这些变化的实现就要通过动态换肤来实现. 2.运行到程序 ...
- Xamarin图表开发基础教程(9)OxyPlot框架
Xamarin图表开发基础教程(9)OxyPlot框架 OxyPlot组件构成 OxyPlot组件主要由两个类构成,分别为PlotView和PlotModel.这两个类我们在上文中也使用到了.本节将讲 ...
- 【源码分析】cocostudio场景编辑器的触发器逻辑
去看场景编辑器的差不多都可以看到有模拟器的设置(菜单栏的设置).默认是选择cocostudio安装路径中的Simulator.exe这个模拟器,看官网介绍是自己可以选择模拟器,而且公开源代码可以按需设 ...
- 【转】xhEditor技术手册 网页编辑器基础教程
1. xhEditor入门基础 1.1. 在线可视化HTML编辑器概述1.2. 获取xhEditor1.3. xhEditor运行环境1.4. xhEditor基本使用指南 1.1. 在线可视化HTM ...
- cocos基础教程(3)cocos3.x版本目录结构介绍
简介 cocos2d-x-3.x版本进行了很多优化,比如:将TTF字体用Atlas缓存,节点重排序官方声称提升了10倍速度,查找.移除节点方面也提高了10%,拆分渲染层到独立的线程运行: 另外,coc ...
随机推荐
- 内置模块加载器(commonjs规范)的使用
index9.html <html><head> <title>模块加载器</title> <script src="jquery-1. ...
- 微信小程序内测申请
想申请微信小程序的内测?别做梦了! 小程序内测是邀请制的,目前就发放了200个内测邀请.正因为稀缺,江湖传言内测资格已经炒到300万(一套房)一个了 但是!!!!你可以先熟悉一下相关资料和文档,下载一 ...
- [codevs 1306]广播操的游戏(Trie)
题目:http://codevs.cn/problem/1306/ 分析:题意一看就知道就是要求Trie有多少个节点.但是如果每次单独取原串的所有子串加入Trie会超时,为什么呢?比方说AAABBBC ...
- web.xml的深入学习
1.过滤器? 监听器? listener servlet filter? 2.命名空间? schema? DTD? xml文件的学习要好好的看下哦!
- Spring-事物-不依赖应用服务器的开源JTA事物实现
不依赖应用服务器的开源JTA事物实现JOTM和Atomikos Transactions JOTM 即基于Java开放事务管理器(Java Open Transaction Manager),实现JT ...
- BZOJ-1192 鬼谷子的钱袋 2^n有关数论
1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2473 Solved: 1806 [Submit][St ...
- Spring JdbcTemplate 的使用与学习(转)
紧接上一篇 (JdbcTemplate是线程安全的,因此可以配置一个简单的JdbcTemplate实例,将这个共享的实例注入到多个DAO类中.辅助的文档) Spring DAO支持 http://ww ...
- POJ1067 取石子游戏
Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- on the way to Peking University
明天就要去北京参加北大夏令营了,希望这次能有所斩获! on the way to Peking University
- 点击div区域以外部分,div区域隐藏
核心思想: 监听body的click事件,事件触发的时候判断是否发生在弹出的div上,如果不在,关闭弹层 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...