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

简介:

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

 

   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,  true false );
     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界面中的控件运行上述3DAction呢?经过简单分析,感觉很难,即使使用官方网站提到的自定制组件技术。记得早期版本开发过程中,就发现过不少的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
















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1714617,如需转载请自行联系原作者




相关文章
|
3月前
|
安全 Linux Nacos
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
182 0
|
9天前
|
C# 开发者 Windows
一款基于Fluent设计风格、现代化的WPF UI控件库
一款基于Fluent设计风格、现代化的WPF UI控件库
|
24天前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
【7月更文挑战第28天】随着移动应用市场的发展,用户对界面设计的要求不断提高。Material Design是由Google推出的设计语言,强调真实感、统一性和创新性,通过模拟纸张和墨水的物理属性创造沉浸式体验。它注重色彩、排版、图标和布局的一致性,确保跨设备的统一视觉风格。Android Studio提供了丰富的Material Design组件库,如按钮、卡片等,易于使用且美观。
58 1
|
1月前
|
异构计算 Python
30行代码实现一个带UI界面的图片背景移除工具:并附带web网页
人工智能技术正处于蓬勃发展中,移除图片背景的方法众多,涵盖了各式各样的实现途径和模型。然而,这些方法往往在安装和配置环境方面稍显复杂。今天,介绍一种极其简便的方法——大约30行代码,就能实现这一功能。虽然相比之下可能稍显简单,但对于不太苛刻的需求来说,这种方法颇为方便实用。
Pycharm主题切换(禁用)导致UI界面显示异常解决
问题记录 UI显示异常 安装多个主题时,当禁用某些主题,切换回one dark theme时,发现代码编辑窗口背景变成白色,菜单栏其他地方背景为黑色 问题原因 查看Settings>Editor>Color Scheme>General,发现方案被改为-Classic Light
|
1月前
|
C# Windows
一款开源、免费、现代化风格的WPF UI控件库
一款开源、免费、现代化风格的WPF UI控件库
|
2月前
|
XML Android开发 数据格式
【Android UI】使用RelativeLayout与TableLayout实现登录界面
【Android UI】使用RelativeLayout与TableLayout实现登录界面
40 5
|
1月前
Element UI 树形控件Tree 【详解】el-tree 展开指定节点,判断是否存在指定节点
Element UI 树形控件Tree 【详解】el-tree 展开指定节点,判断是否存在指定节点
149 0
|
2月前
|
API Apache C#
推荐2款开源、美观的WinForm UI控件库
推荐2款开源、美观的WinForm UI控件库
121 1
|
3月前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
48 1