error: ‘to_string’ is not a member of ‘std’

现象

cocos2d-x 2.2.6 项目的源码中使用了 std::to_string() 方法,使用 NDK r9d 编译的时候,报如下错误:

error: 'to_string' is not a member of 'std'

Application.mk 文件的部分内容如下:

APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.8
APP_CPPFLAGS := -frtti -std=c++11 -fexceptions -Wno-error=format-security -Wno-literal-suffix -Wno-deprecated-declarations -fsigned-char -Os $(CPPFLAGS)

换用 NDK 10e ,错误依然。

继续阅读error: ‘to_string’ is not a member of ‘std’

cocos2d-x 滤镜对 dragonbones 的支持

目前项目需要对 dragonbones 骨骼动画增加滤镜支持。这样就可以方便地利用同一套骨骼动画资源制作例如变色、中毒或者真假英雄等效果,节省美术同学的工作量以及运行时的内存占用。

cocos2d-x-filters 项目提供的滤镜功能,是针对纹理进行操作的。用于显示的两个类 FilteredSpriteWithOneFilteredSpriteWithMulti 也是继承自 Sprite 。

但 dragonbones 是一个层级结构,dragonbones 中的那个 _display ,其实仅仅是起到了容器的作用,并没有什么特殊的渲染工作。因此要对 dragonbones 进行滤镜处理,最简单的办法就是对 dragonbones 中的每一个骨骼做滤镜处理。

具体的方法如下: 继续阅读cocos2d-x 滤镜对 dragonbones 的支持

关于 cocos2d-x 滤镜

cocos2d-x 并没有提供滤镜支持。由于美术同学的强烈需求,我不得不在刚刚学习 C++ 的时候写了一个 cocos2d-x-filters 项目,为游戏中的纹理提供一些基本的变色、模糊等效果。

这个项目从2014年3月开始,到现在已经一年多了。最近为了给 dragonbones 增加滤镜支持,不得不把原来的项目翻开来重新看了一遍,发现以前学的 OpenGL 现在都忘得差不多了。这是个很糟糕的体验,我决定趁着这个机会把这个项目捡起来,增加一些必要的滤镜,同时继续学习 OpenGL 知识。

于是,我为 cocos2d-x-filters 项目单独写了一个 page ,方便持续更新。

这套滤镜项目最早是在 cocos2d-x v2.2 下开发的,后来我将其移植到 quick-cocos2d-x 中并做了必要的 Lua 封装,也将其推送到了 quick 官方库

后来,quick 团队将其移植到了 v3quick 中,我基于 quick 团队移植的版本,重新调整了项目结构,形成了现在的 cocos2d-x-filters v3.x 分支

我将在这个分支的基础上持续更新。

(全文完)

cocos2d-x 3.4 lua 触摸 BUG

2015-04-20 更新:该 bug 已经解决,见本文结尾。


查看所有 quick 移植到 cocos2d-x lua 的文章

移植 quick2.2.3 的项目到 cocos2d-x 3.4 lua 中提到,我已经开始使用 cocos2d-x 3.4 lua 来开发目前公司的两个项目。

在这两个项目中,我将 cocos 的 lua 框架、quick 的 lua 框架和我自己开发的 lua 代码,全部整合到了我的 lua 项目 中。

下面提到的 quick 框架,都是指的我整合的这个 lua 项目。 继续阅读cocos2d-x 3.4 lua 触摸 BUG

dragonbonesCPP 在 Android 5.x 上问题的解决

在 cocos2d-x 3.4 上遇到了一个诡异的问题,记录如下。

平台和版本

  • 框架: cocos2d-x 3.4 final
  • 设备: Nexus 4/5/7 with Android 5.0.1/5.0.2
  • NDK version: r9d

问题描述

一个 dragonbonesCPP 骨骼动画,在 iOS、Windows、Mac OS X、Android with 4.x 上表现完全正常,但在 Android 5.x 下表现不正常。

具体表现为解析骨骼动画数据的时候,既不 crash,也没有任何报错信息,整个程序就停住了。 继续阅读dragonbonesCPP 在 Android 5.x 上问题的解决

cocos2d-x 3.3 lua 相关修改

从 quick 转向 cocos2d-x 3.3 lua 中,我提到会将转换过程中积累的经验进行分享。这是其中一篇。要查看更多,请点击:查看所有 quick 移植到 cocos2d-x lua 的文章

  • 2015-02-26更新: 修正解决方案。

cocos2d-x 3.3 的 lua 项目在运行时,会出现一些不符合人类习惯的问题。下面是我碰到的以及解决方案。 继续阅读cocos2d-x 3.3 lua 相关修改

cocos2d-x v2 和 v3 对照手册

2015-05-04 更新: 加入 OpenGL 和 MenuItem 的相关变化。


本文的内容来自于对其它几篇文章的翻译、修改和合成,同时,我也会不断增加自己的内容。

下面这部分内容来自对这篇文章的翻译:cocos2d-x v2 to v3 mapping guide

但这篇文章有一些老了,还有一些内容已经在 cocos2d-x 3.3 中过时。因此,我并没有进行完全对照翻译。对原文中的错误,我也进行了一些修改。


我的新项目开始使用 cocos2d-x v3 。cocos2d-x v3 和 v2 相比有非常大的改变。我把踩过的坑列在下面,以方便后来之人。 继续阅读cocos2d-x v2 和 v3 对照手册

从 quick 转向 cocos2d-x 3.3 lua

  • 2014-11-30 更新:
    今天在 quick 的博客上看到了 duceface 的新文章:cocos2d-lua 与 quick 的未来,不由得热(kua)泪(zhang)盈(shou)眶(fa),看来 dualface 一直在努力,终于有成果了。
  • 2015-01-15 更新:
    加入 LiteFeel 的 如何在lua项目中使用dragonbones 文章链接。
  • 2015-01-16 更新:
    今天下载了 cocos2d-x 3.4 RC1 ,发现其中已经集成了一个 simulator,包含了原来 quick-player 的部分功能。根据阳光七月的说法,quick 到了3.4之后将不再单独发展。这真是个好消息。

在我的第一个 cocos2d-x 项目立项时,我曾经纠结过是使用 Lua 绑定还是使用 JS 绑定。最后选择了使用 Lua : Cocos2d-x script language binding:Lua or Javascript? 。cocos2d-x 的 Lua 绑定做得很糟糕,所以,我基于 quick-cocos2d-x 2.2.3 这个更好的 Lua 绑定版本进行了许多修改,那时 quick 还是在独立发展。

后来,Quick 被触控收购,Quick 进行了不兼容的升级。由于我对 Quick 的修改过多,当时的项目也在非常重要的时期,我没有持续跟进 Quick 的升级步伐,一直在使用自己 forked 的版本。

在这段艰苦时间中,我在 Quick 社区和 Quick 团队身上也学到了不少东西。感谢 dualface、Jimmy、阳光七月、ChildhoodAndy、微微蓝 等朋友提供的无私帮助。

在这些朋友的帮助下,我对 openGL ES 做了初步的了解,写出了 cocos2d-x 的 filter 组件;熟悉了 cocos2d-x 引擎的源码架构;把 DragonBonesCPP 整合进入了 quick 框架中;了解了 lua 与 C++ 交互的方式……

下面有一个不全的列表: 继续阅读从 quick 转向 cocos2d-x 3.3 lua

删除 lua.ByteArray 中与 Long 相关的方法

删除 lua.ByteArray 中与 Long 相关的方法

Delete some methods about Long in lua.ByteArray.

用lua实现ByteArray和ByteArrayVarint 一文中,我介绍了用 lua+lpack+BitOp 实现的 ByteArray 模块,这个模块模仿 AS3 的ByteArray,给从Flash转到quick-cocos2d-x的程序员以亲切感。

这个模块被网友们找出了一些BUG,例如 这个这个这个 ,和 这个

今天,我将这些网友提出的问题一一做了确认和测试,发现有些并非BUG,而是理解有偏差。

但有个不是BUG的问题却可能造成重大的错误,那就是: 继续阅读删除 lua.ByteArray 中与 Long 相关的方法

在 quick-cocos2d-x 中使用 DragonBonesCPP

在 quick-cocos2d-x 中使用 DragonBonesCPP

Using DragonBonesCPP in quick-cocos2d-x.

2014-07-31更新:三件事已经全部搞定,DragonBonesCPP已经推送到了quick-cocos2d-x 官方库。


1 前言

DragonBones 官方C++版本 for cocos2d-x 这篇文章中,我已经简单地介绍过了 DragonBonesCPP 这套用于取代 CCArmature 的库。

在我自己修改的 quick-cocos2d-x 版本中,我已经把 CCArmature 库删除,完全使用 DragonBonesCPP 。

我们的产品也完全使用 Flash 和 DragonBonesCPP 来制作骨骼动画。所有AS3版本的DragonBones提供的功能,在CPP版本中都能完整地实现。

几个月之前,我就已经将 DragonBonesCPP 整合到了 quick-cocos2d-x 中,只是一直没有向官方库推送PR。这也是因为有几个内存泄露的BUG还没有解决。

现在,我终于有时间可以来做这件事。我的计划如下:

  1. 写一篇关于 DragonBonesCPP 的教程(quick专用哦);
  2. 解决 DragonBonesCPP 的遗留问题,并进一步封装lua api方便使用;
  3. 将 DragonBonesCPP 推送到quick的官方仓库。

那么,这篇文章就是第一件事了。 继续阅读在 quick-cocos2d-x 中使用 DragonBonesCPP