cocos2d-x初学者解惑(三)
今天我们将对剩下的问题进行解答,若有本文内容之外的问题,我们后续再讨论。
回调特性有什么作用?
答:回调特性允许开发者直接在编辑器中指定某个控件事件的处理函数。这样一来,无需逐个获取控件,也不必在修改控件名或其他属性后去修改程序,这些工作可交由策划人员完成。
对于回调特性的使用方法,可查看此篇教程:http://cn.cocos2d-x.org/tutorial/show?id=2028
如何导入Flash?
答:无法直接导入Flash,但可以从Flash导出CS项目,然后将其放入现有项目中。
具体实现方法可查看插件作者的帖子:http://www.cocoachina.com/bbs/read.php?tid=236927
如何创建骨骼动画?
答:CocosStudio v2.x版本没有骨骼动画的概念,不过使用现有的动画机制也能创作出较好的动画效果。若觉得现有机制不足,可使用CocosStudio v1.6的动画编辑器进行编辑,然后使用骨骼控件引用到CocosStudio v 2.x中。
如何监听各个控件的交互事件?
答:CocosFramework的交互事件包括触摸、键盘、焦点和鼠标事件四种。但GUI事件一般只涉及触摸事件,且不同控件的交互事件都是由触摸事件扩展而来。
GUI控件用于监听触摸事件的函数如下:
addTouchEventListener:这是触摸事件的完整监听函数,能监听到一次触摸的开始、移动、抬起和取消四种事件。每触发一个事件,就会回调一次设置的监听函数。addClickEventListener:当触发抬起这个触摸事件时,回调一次设置的监听函数。addEventListener:此事件依不同控件有所不同。
基于Cocos获取界面上的某个对象进行操作?
答:Cocos Framework的界面对象以树形式组织,节点之间通常是父子级关系。
节点提供了getChildByName和getChildByTag两个接口,支持通过对象的名字和逻辑标签来获取子节点。但这两个接口只能获取当前节点的子节点,不能获取子节点的子节点。另外,还有getParent接口,用于获取当前对象的父节点。
场景、图层、节点的区别?
美术层面
- 场景文件可视为一个屏幕,不能嵌套到其他文件中。它是游戏中必不可少的元素,可用于创建关卡、菜单等。
- 节点文件是界面的最基本元素,一般用于存储控件及制作小动画,以便在其他类型文件中复用。
- 图层文件通常包含直接在屏幕上呈现的内容,需要在图层中加入精灵、文本标签或其他游戏元素,并设置这些元素的属性,如位置、方向、大小以及动作等。
技术层面
Cocos Framework的界面对象以树形式组织。节点(Node)是构成树的基本元素,所有能够挂载到树上的对象都必须继承节点,包括场景和图层对象。场景(Scene)对象在Framework中一般作为一个界面的入口,即树的根。图层(Layer)是节点的扩展,能够监听游戏的触摸、重力感应、键盘事件。
在Cocos Framework中如何加载Cocos创建的界面?
答:对于csb和json文件,可使用CSLoader对象的createNode接口,传入csb文件和json文件的路径。对于lua格式的文件,在lua中require对应的文件,然后调用其中的create函数即可。
某些情况下执行CSLoader::createNode执行成功,但是将加载出来的节点添加到界面后只有文本,或没有任何内容,请问怎么解决?
答:Cocos Framework的reader使用绝对路径来定位图片,可能是你修改了导出的csb/json文件的路径,但没有将修改后的路径添加到FileUtils的searchPath中。
某些情况下执行CSLoader::createNode返回空值,应该怎么解决?
答:一般是cocos frameWork与cocos studio版本不对应,请将framework升级至cocosstudio对应的版本。若版本能够对应但依然加载失败,请检查传入createNode的文件的路径,查看加载过程中的输出数据是否有可用的异常信息。