文档章节

用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效

乐搏学院
 乐搏学院
发布于 2017/02/08 10:56
字数 745
阅读 53
收藏 0

 cocos2d-x + cocos studio无疑是当下二维手游开发的利器,但是在从旧版本向新版本的升级过程中,坑坑也的确不少。看到网络上这方面的记录多如牛毛,但又大多是只言片语,甚至于最可靠的官方网站上许多文档也都十分过时。因此,深深觉得,要做成功一项开源项目的确很难,而这部分文档教程又恐怕无非一个两个员工所能为。感于此,继续记录下我这边的踏坑中的只言片论,供参考。

 

1.以前试验环境

 

 

  • cocos2d-x 2.2.3

  • CocoStudio 1.4.0.1

    以前运行如下代码OK:

1

2

3

         UIButton* Button_Start = static_cast<UIButton*>(widget->getChildByName("Button_Start"));

         CCActionInterval* waves1 = CCWaves3D::create(10, CCSizeMake(15,10), 18, 5);

         Button_Start->runAction(CCRepeatForever::create(waves1));

 

    恕不再奉上运行时截图。

 

2.当前试验环境

 

 

  • Cocos2d-x 3.8.1

  • Cocos Studio 2.3.2

     当前运行如下代码FAILED:

1

2

3

         Button* Button_Start = static_cast<Button*>(Helper::seekWidgetByName(Panel_Back, "Button_Start"));

         auto  waves1 = Waves3D::create(10, CCSizeMake(15,10), 18, 5);

         Button_Start->runAction(CCRepeatForever::create(waves1));

 

 

    运行时错误截图:

wKioL1ZNRNPTSeNgAAF24ldofSo845.jpg

    跟踪源码大致分析得知:运行上述Action的主体必须是GridNode类型。其实,上面图中的_gridNodeTarget正是GridNode类型的指针。

 

3.cpp-tests中实例证明

 

  参考源码文件见EffectsAdvancedTest.cpp,相关代码如下:

 

1

2

3

4

5

    auto waves = Waves::create(5, Size(15,10), 5, 20, truefalse);

    auto shaky = Shaky3D::create(5, Size(15,10), 4, false);

     

    _target1->runAction( RepeatForever::create( waves ) );

    _target2->runAction( RepeatForever::create( shaky ) );

 

 

   其中,_ target1和_target2都是NodeGrid指针类型。另外上面Waves替换成Waves3D也一样,因为二者都继承自Grid3DAction(参考下图)。

注意上述文件中有关类似的代码很多很多。

wKiom1ZNRyfQtP-YAAFi9hjjP0I168.jpg

 

4.补充

 

    第一,早期的上述3D动作特效只要求其运行实体对象为Node,当前版本的则要求其运行实体对象为NodeGrid,这正是上述运行时错误产生的根源。至于如何官方设计如此转换,暂不得而知。不过我还是坚信官方技术一定会朝着越来越科学高效的目标发展,尽管其过程中存在多种问题。

    第二,能否通过变通方式实现UI界面中的控件运行上述3D类Action呢?经过简单分析,感觉很难,即使使用官方网站提到的自定制组件技术。记得早期版本开发过程中,就发现过不少的Studio中的控件技巧与直接在界面中添加的Node及其子类存在许多不致的方面,现在仍然如此!当然,想彻底弄清楚内在规律肯定需要花费不少时间。

5.Refs

(1)http://www.cocos.com/doc/article/index?type=cocostudio&url=/doc/cocos-docs-master//manual/studio/v4/chapter3/Extend/Directory/../WidgetExtend/zh.md

(2)http://www.cocoachina.com/bbs/read.php?tid=225481

(3)http://guandongsheng.iteye.com/blog/2091679

(4)http://my.oschina.net/Jacedy/blog/301575

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

© 著作权归作者所有

乐搏学院
粉丝 9
博文 526
码字总数 707467
作品 0
丰台
程序员
私信 提问
购买李宁Cocos2d-x套餐,送最新出的《Cocos2d-x游戏实战指南》签名书一本

活动时间:2016-10-18至2016-11-30 通过本套餐,可完全了解Cocos2d-x 3.x的相关技术,以及掌握C++语言,并具有一定的项目实战经验。 Cocos2d-x游戏开发套餐:http://edu.51cto.com/pack/vie...

androidguy
2018/06/29
0
0
Cocos2d-x Lua中网格动作

GridAction它有两个主要的子类Grid3DAction和TiledGrid3DAction,TiledGrid3DAction系列的子类中会有瓦片效果,如下图所示是Waves3D特效(Grid3DAction子类),如后图所示是WavesTiles3D特效...

智捷课堂
2015/05/19
0
0
会议纪要-03.28.2015

杨祁博: 01.推塔部分工作全部完成 卢凯庆: 01.搭建主城和主界面UI部分 雷 鹏: 01.解决UI界面和特效的层级显示 02.熟悉项目战斗系统 吴光远: 01.竞技场规则调整 02.美术需求 张晓秋: 01...

索亚之息
2015/03/28
2
0
会议纪要-03.27.2015

曾艳明: 01.完成竞技场排行榜功能 杨祁博: 01.完成推塔预览部分 02.战斗部分整合 卢凯庆: 01.搭建竞技场UI部分 雷 鹏: 01.完成数据加载 02.熟悉主界面逻辑 吴光远: 01.战斗部分优化(规...

索亚之息
2015/03/27
2
0
Cocos2d-x Lua中实例:特效演示

下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Bac...

智捷课堂
2015/05/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

非递归实现后序遍历二叉树

问题描述 从键盘接受输入先序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行后序遍历,然后将遍历结果打印输出。要求采用非递归方法实现。 解题思路 Push根结点到第一...

niithub
9分钟前
0
0
IDEA 自动删除类中无用的import包

1.手动快捷键 Ctrl + Alt + O 2.配置自动清理 Ctrl + Alt + S 打开设置 然后,进行如下操作:

时刻在奔跑
12分钟前
0
0
cwRsync提示password file must be owned by root when running as root的解决方法

cwRsync提示password file must be owned by root when running as root的解决方法 更新时间:2015年08月30日 23:05:52 投稿:mdxy-dxy 我要评论 今天在配置服务器的时候,用了rsync4.10版本...

rootliu
16分钟前
0
0
Java 交换两个参数

目前有一个小需求: 定义一个函数,交换两个值。于是,有人就写了这样一个函数。 public class exchange_01 { public static void main(String[] args) { // TODO Auto-gen...

hellation_
25分钟前
0
0
ExoPlayer简单使用

一、介绍 ExoPlayer是google开源的应用级媒体播放器项目,该开源项目包含ExoPlayer库和演示demo,github地址:https://github.com/google/ExoPlayer。 二、概述 ExoPlayer库的核心是ExoPlay...

零点B5
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部