csb dump

查看节点信息。

local function dumpNode(node, deep)
    print("== deep:", deep)
    print("== parent:", node:getName(), tolua.type(node))
    print("== child ==")
    for _, child in ipairs(node:getChildren()) do
        print(child:getName(), tolua.type(child))
        dumpNode(child, deep + 1)
    end
    print("== child end ==")
end

闪白 shader

分别在r、b、g向量上叠加一个0~1之间的值。

#ifdef GL_ES
precision mediump float;
varying mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif

void main()
{
    vec4 c = texture2D(CC_Texture0, v_texCoord);
    if (c.a <= 0.0) {
        discard;
    }
    float param = 0.2;
    gl_FragColor = vec4(c.r + param, c.g + param, c.b + param, c.a);
}

cocos creator 加载二进制

注意微信上必须是bin后缀的,才能以二进制模式读取文件。

微信返回的是 ArrayBuffer, chrome返回的是Uint8Array。

var url = cc.url.raw("resources/bin/data.bin");
cc.loader.load({ url: url, type: "binary", }, function (err, data) {
    if (data instanceof ArrayBuffer){
        data = new Uint8Array(data);
    }
    console.log("err ===", err);
    console.log("data ===", data.length);
});

luajit 编译 windows, mac 下的64位程序

win

  1. 启动vs的64位编译

    xxx\vs2015\VC\vcvarsall.bat amd64
  2. 切换到luajit src目录,运行

    msvcbuild.bat gc64

mac

make clean
make CC="gcc -m64 -arch x86_64 -DLUAJIT_ENABLE_GC64"

加LUAJIT_ENABLE_GC64 决定了是否64位的bytecode

m4 在 mac 下 Abort trap: 6的解决

参考homebrew下的m4安装描述,https://github.com/Homebrew/homebrew-core/blob/master/Formula/m4.rb

 # Fix crash from usage of %n in dynamic format strings on High Sierra
  # Patch credit to Jeremy Huddleston Sequoia <jeremyhu@apple.com>
  if MacOS.version >= :high_sierra
    patch :p0 do
      url "https://raw.githubusercontent.com/macports/macports-ports/edf0ee1e2cf/devel/m4/files/secure_snprintf.patch"
      sha256 "57f972940a10d448efbd3d5ba46e65979ae4eea93681a85e1d998060b356e0d2"
    end
end

手动打上面的补丁,编译安装。

Quick-Cocos2dx-Community 3.7.4 Beta

2019第一个测试版本发布,祝大家新年快乐。

同以往一样,测试稳定后将正式发布到 http://www.cocos2d-lua.org

社区版的发展,离不开大家的关爱与支持,捐献传送门。http://www.cocos2d-lua.org/donate/index.md

3.7.4 Beta 主要改进了win32的editbox体验,扫清开发pc游戏最后一个尴尬点;
升级了OpenAL库,对Android驱动有一定改善。

改进

  1. 新接口,cc.EventTouch:setTouches{cc.p(x,y), cc.p(x,y), …}。可以用来模拟触摸事件。
  2. config.lua 中去掉无用的变量。
  3. luasocket 的 socket open 添加异步线程,让第一次open不至于在某些特定情况下卡死UI。
  4. 更新 OpenAL 到 1.19.1。
  5. Scale9Sprite 添加 setGLProgramState 支持自定义shader。
  6. pb int64 最大值改进(max 2^ 53)。
  7. player的log路径修改为可写路径。
  8. iOS 模版工程改进,添加新的icon尺寸格式。
  9. Android studio模版配置改进,支持3.2的 AS。
  10. 同步-x win32输入法改进,并修正缩放bug。
  11. 改进Label,正确显示阴影。
  12. ClippingRectangleNode嵌套再改进,算法同 ccui.Layout。
  13. VideoPlayer 改进。

阅读全文»

Cocos2d 在 mac 10.13 和 xcode 10.1 组合下,移动才显示的bugfix

Mac和Xcode的组合bug,在最新的Mac更新中应该已解决。如果依然存在问题,可以用下面的方式修正。

在 CCApplication-mac.mm 中做如下修正。

// 添加的头文件
#ifdef __APPLE__
#include "platform/desktop/CCGLViewImpl-desktop.h"
#endif

    while (!glview->windowShouldClose())
    {
        lastTime = getCurrentMillSecond();
        
        director->mainLoop();
        glview->pollEvents();

        curTime = getCurrentMillSecond();
        if (curTime - lastTime < _animationInterval)
        {
            usleep(static_cast<useconds_t>((_animationInterval - curTime + lastTime)*1000));
        }
        
#ifdef __APPLE__  // 添加的内容
        static bool macMoved = false;
        if(!macMoved) {
            int x, y;
            GLViewImpl *view = (GLViewImpl *)glview;
            glfwGetWindowPos(view->getWindow(), &x, &y);
            glfwSetWindowPos(view->getWindow(), ++x, y);
            macMoved = true;
        }
#endif
    }