【版本发布】cocos2d-x v3.7.1 正式发布

[size=3]亮点功能[/size]

Cocos2d-x v3.7.1是基于v3.7开发的一个稳定版本。该版本最重要的功能是为支持Cocos 2.3.2Beta而增加的骨骼动画支持。
[list=1][li]studio: 增加了骨骼动画支持[/li][li]studio: 增加了对天空盒的支持[/li][li]studio: JSON解析器支持Parsed Touch/Click/Event事件回调[/li][li]Node: 新增getNodeToParentTransform(Node*)接口,该接口用于返回到某一特定父类的转换矩阵[/li][li]web: 新增cc.director.setClearColor()接口用于支持设置透明背景[/li][li]Widget: 同步UI的enable状态和bright状态[/li][li]studio: 优化解析代码性能[/li][li]JSB: 模板代码增加Firefox的远程调试功能[/li][/list]
[size=3]下载地址[/size]

Cocos2d-x v3.7.1 包含: C++, Lua & JS

[size=3]主要功能详细情况[/size]

[size=3]骨骼动画[/size]

Cocos2d-x v3.7.1和Cocos 2.3.2增加了新的骨骼动画系统,不同于之前的Armature骨骼动画。这么做的主要原因是我们抽象了ActionTimeline来支持所有基于时间轴的动画但是Armature并不支持这套时间轴体系。为了复用时间轴系统并让骨骼动画系统更精简,数据更轻量,我们实现了这套全新骨骼动画系统。从这个版本开始,开发者将可以在Cocos 2.3.2中编辑骨骼动画。

新的骨骼动画系统包含BoneNode, SkeletonNode, SkinNode三个核心类。SkeletonNode是BoneNode的子类,扩展了容器能力,它可以包含子BoneNode和嵌套其他骨骼来构造一个完整的骨骼结构。

支持的特性:
[list=1][li]骨骼动画播放[/li][li]嵌套骨骼[/li][li]皮肤切换[/li][li]时间轴控制[/li][li]渲染调试节点[/li][/list]
帧回调事件新骨骼动画系统在web引擎中同步支持,我们还会在未来版本中继续加强其功能
[p_w_upload=97132]
获取节点到某一个祖先节点的矩阵变换

在v3.7.1新加了一个接口Node::getNodeToParentTransform()。你可以传入该Node的一个祖先节点,返回的将是该节点到这个祖先节点的矩阵变换,比如:

<pre class="brush:cpp; toolbar: true; auto-links: false;">auto parent2 = Node::create();
auto parent1 = Node::create();
auto node = Node::create();
parent2->addChild(parent1);
parent1->addChild(node);
// This will give you the transform of node in parent2's coordinate system
auto transform = node->getNodeToParentTransform(parent2);</pre>
这个接口对于web引擎也是可用的。

[size=3]web引擎支持设置背景颜色[/size]

从v3.7.1开始,我们增加了cc.director.setClearColor(),是的web引擎可以方便地控制游戏的背景颜色。传入的颜色可以是不透明的或者含透明度通道。注意,如果你想要的是不透明的背景颜色的话,这种方法比创建一个不透明的层作为背景更高效。具体可以参考如下代码:

<pre class="brush:cpp; toolbar: true; auto-links: false;">// 方法1:使用不透明的层作为背景
var background = cc.LayerColor(cc.color(255, 0, 0));
background.width = cc.winSize.width;
background.height = cc.winSize.height;
// This will give you a red background
scene.addChild(background, 0);

// 方法2:使用setClearColor,该方法比方法1高效
cc.director.setClearColor(cc.color(255, 0, 0));</pre>
当然了,你也可以创建完全透明的背景颜色。

Widget的enable状态和birhgt状态

在之前的设计,setEnabled只控制widget是否响应输入,而不影响widget的显示效果。许多开发者对此设计颇有怨言。所以从v3.7.1版本开始,我们修改了这一逻辑,使得setEnabled会影响到widget的显示效果。这就意味着,当你通过调用setEnabled(false)把一个widget变成不可用时,它会显示为灰色。

<pre class="brush:cpp; toolbar: true; auto-links: false;">// 旧版本,你需要这样调用
widget->setEnabled(false);
widget->setBright(false);

// 在v3.7.1版本,你只需要调用
widget->setEnabled(false);</pre>
[size=3]Firefox remote debugger support[/size]

从v3.7.1版本开始,新建的JSB工程支持Firefox远程调试。可以通过该文档了解如何使用Firefox浏览器来调试你JSB工程。注意,它只能调试JavaScript代码。如果要调试C++代码的话,还是需要通过Xcode或者Visual Studio。

[p_w_upload=97133]

JSB 关于cocostudio回调特性如何使用?

请问 骨骼动画导出时能带些参数吗? 比如是否合成大图 是否带数据缩放

:2: :2:

Lua合适才能更新:6:

。。。。

说好不增加新功能?

不知道3.7不能打包成安卓APP的bug有没有修复.

— Begin quote from ____

引用第5楼haroel于2015-08-13 13:23发表的 :

。。。。

说好不增加新功能? http://www.cocoachina.com/bbs/job.php?action=topost&tid=318856&pid=1367600

— End quote

这个是3.7.1,这个的排程是在3.8之前的。主要是新增骨骼动画,这个功能在3.7来不及加入。

3.8不加功能,只做优化和bug修复,目前正在进行第二轮测试。

— Begin quote from ____

引用第6楼zwpmain于2015-08-13 14:12发表的 :
不知道3.7不能打包成安卓APP的bug有没有修复. http://www.cocoachina.com/bbs/job.php?action=topost&tid=318856&pid=1367639

— End quote

能详述吗?3.7 打包安卓app有什么bug?或者有链接么?

— Begin quote from ____

引用第1楼zj167793于2015-08-12 19:01发表的 :
JSB 关于cocostudio回调特性如何使用? http://www.cocoachina.com/bbs/job.php?action=topost&tid=318856&pid=1367149

— End quote

var mainscene = ccs.load(res.MainScene_json);
//获取出绑定了点击事件的元素
var button = ccui.helper.seekWidgetByName(mainscene.node, "Button_1");
//然后写入绑定的事件方法
button"aaa"] = function(){
    cc.log("click aaa");
};
this.addChild(mainscene.node);
```

我就想问 你们将创建出的lua工程 改成了全新的东西 也不像quick 也不像原生 什么时候能写一个大概的说明文档。

:2: :2: :2: :2: :2:

Based on: cocos2d-x-3.7.1
Updated project.properties
Updated local.properties
Updated file E:\file\cocos\CocosProject2\frameworks\runtime-src\proj.android\proguard-project.txt
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
make.exe: Entering directory E:/file/cocos/CocosProject2/frameworks/runtime-src/proj.android' Compile++ thumb: cocos2djs_shared <= AppDelegate.cpp Compile++ thumb: cocos2djs_shared <= SimpleConfigParser.cpp Compile++ thumb: cocos2djs_shared <= RuntimeJsImpl.cpp In file included from C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpClient.h:34:0, from C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/../../manual/network/XMLHTTPRequest.h:34, from jni/../../Classes/js_module_register.h:22, from jni/../../Classes/AppDelegate.cpp:12: C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h: In member function 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::SEL_CallFuncND)': C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:245:66: warning: 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::network::SEL_HttpResponse)' is deprecated (declared at C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:255) -Wdeprecated-declarations] setResponseCallback(pTarget, (SEL_HttpResponse) pSelector); ^ Compile++ thumb: cocos2djs_shared <= main.cpp Compile thumb : cpufeatures <= cpu-features.c At global scope: cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" Compile++ : cocos2djs_shared <= AppDelegate.cpp Compile++ : cocos2djs_shared <= SimpleConfigParser.cpp Compile++ : cocos2djs_shared <= RuntimeJsImpl.cpp In file included from C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpClient.h:34:0, from C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/../../manual/network/XMLHTTPRequest.h:34, from jni/../../Classes/js_module_register.h:22, from jni/../../Classes/AppDelegate.cpp:12: C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h: In member function 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::SEL_CallFuncND)': C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:245:66: warning: 'void cocos2d::network::HttpRequest::setResponseCallback(cocos2d::Ref*, cocos2d::network::SEL_HttpResponse)' is deprecated (declared at C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/3d/prebuilt-mk/../../network/HttpRequest.h:255) -Wdeprecated-declarations] setResponseCallback(pTarget, (SEL_HttpResponse) pSelector); ^ At global scope: cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" Compile++ : cocos2djs_shared <= main.cpp Compile : cpufeatures <= cpu-features.c StaticLibrary : libcpufeatures.a SharedLibrary : libcocos2djs.so StaticLibrary : libcpufeatures.a C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/..\..\..\..\..\prebuilt\android/armeabi/libjscocos2dandroid.a(CCJavascriptJavaBridge.o):function JavascriptJavaBridge::CallInfo::checkType(std::string const&, unsigned int*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/..\..\..\..\..\prebuilt\android/armeabi/libjscocos2dandroid.a(CCJavascriptJavaBridge.o):function JavascriptJavaBridge::callStaticMethod(JSContext*, unsigned int, JS::Value*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/editor-support/cocostudio/prebuilt-mk/..\..\..\..\prebuilt\android/armeabi/libcocostudio.a(CCActionNode.o):function std::vector<cocos2d::Vector<cocostudio::ActionFrame*>*, std::allocator<cocos2d::Vector<cocostudio::ActionFrame*>*> >::at(unsigned int): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/editor-support/cocostudio/prebuilt-mk/..\..\..\..\prebuilt\android/armeabi/libcocostudio.a(CCArmature.o):function cocostudio::Armature::drawContour(): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' collect2.exe: error: ld returned 1 exit status make.exe: *** Error 1 make.exe: *** Waiting for unfinished jobs.... SharedLibrary : libcocos2djs.so C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/..\..\..\..\..\prebuilt\android/x86/libjscocos2dandroid.a(CCJavascriptJavaBridge.o):function JavascriptJavaBridge::CallInfo::checkType(std::string const&, unsigned int*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/scripting/js-bindings/proj.android/prebuilt-mk/..\..\..\..\..\prebuilt\android/x86/libjscocos2dandroid.a(CCJavascriptJavaBridge.o):function JavascriptJavaBridge::callStaticMethod(JSContext*, unsigned int, JS::Value*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/storage/local-storage/prebuilt-mk/..\..\..\..\prebuilt\android/x86/liblocalstorage.a(LocalStorage-android.o):function localStorageInit(std::string const&): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos/editor-support/cocostudio/prebuilt-mk/..\..\..\..\prebuilt\android/x86/libcocostudio.a(CCActionManagerEx.o):function cocostudio::ActionManagerEx::getActionByName(char const*, char const*): error: undefined reference to 'std::__throw_out_of_range_fmt(char const*, ...)' collect2.exe: error: ld returned 1 exit status make.exe: *** Error 1 make.exe: Leaving directory E:/file/cocos/CocosProject2/frameworks/runtime-src/proj.android’
执行命令:compile
编译模式:debug
使用 Eclipse 工程:E:\file\cocos\CocosProject2\frameworks\runtime-src\proj.android
未指定 Android 目标平台版本,自动查找一个可用版本…
正在执行:’“E:\file\java\sdk\sdk\tools\android” update project -t android-20 -p E:\file\cocos\CocosProject2\frameworks\runtime-src\proj.android’
正在执行 ndk-build…
NDK 编译模式:release
NDK_TOOLCHAIN_VERSION: 4.8
正在执行:’“E:\file\java\ndk\ndk-build” -C E:\file\cocos\CocosProject2\frameworks\runtime-src\proj.android -j3 NDK_MODULE_PATH=C:\Cocos\frameworks/cocos2d-x-3.7.1;C:\Cocos\frameworks/cocos2d-x-3.7.1/cocos;C:\Cocos\frameworks/cocos2d-x-3.7.1/external NDK_TOOLCHAIN_VERSION=4.8’
执行命令出错,返回值:2。

3.7.1编译安卓还是有问题.这个很多人碰到过了.而且我也提交了BUG.还是没有修复.悲剧.

你的ndk版本是什么?编译的是debug还是release?NDK Tool Chain 4.8可能有问题。

这更新速度。。。。。。都跟不上了

debug
ndk r9C
ndk r10都不行

3.7都还没有出旧项目的升级文档,你们还打算出文档或教程 指导旧项目升级么? 现在旧项目都不敢升级

— Begin quote from ____

引用第15楼zwpmain于2015-08-14 19:53发表的 回 13楼(偶尔e网事) 的帖子 :
debug
ndk r9C
ndk r10都不行 http://www.cocoachina.com/bbs/job.php?action=topost&tid=318856&pid=1368833

— End quote

请用r10c。而且我印象中Cocos2d-x没有说对r9c的支持,只有早期的2.x的r8e,3.0-3.2的r9d和3.3以后的r10c(C++)。

能否告知3.8的发布计划?

计划是8.26,如果跳票也差不了几天。