Cocos Creator v1.6.0 内测版发布帖(8月11日更新 rc.1)

1.6开始,已经没有WebSocket.cpp这个文件了,我很好奇为什么你的崩溃堆栈会出现这玩意。
1.6中iOS已经是WebSocket-apple.mm文件了
其他平台重命名为WebSocket-libwebsockets.cpp

有报错吗?

md5的问题,为什么不给cocos等文件也增加md5的版本号,我看打包的文件名还是:cocos2d-js-min.js。下次这个文件升级后,如果我用cdn canche了,就没办法更新了呀。这是个隐藏坑!

从 1.5.1更新到1.6.0 beta3版本后,脚本加载顺序好像变了?

64位win7无法用win32模拟器运行,定位到模拟器路径下以后打开simulator.exe,报缺少vcruntime140.dll错误,然后安装64位VC2015运行时库以后,报缺少vcruntime140d.dll错误,下载一个vcruntime140d.dll后则报《应用程序无法正常启动》
感觉是不是不用强制安装VS会更方便点,毕竟很多时候不需要在windows下编译了。

问题 已经解决
主要问题在 机器设备太差导致心跳包 在一定时间内没有到达服务器端 服务器主动断开连接 。在断开连接的时候 websocket 未 =nul 在断开与重连的时间差 中 有心跳包的发送 导致崩溃
解决办法

  1. 在pomelo 文件中 修改如下 函数
    var onclose = function (event) {
    cc.log(“onclose”);
    pomelo.emit(‘close’, event);
    pomelo.emit(‘disconnect’, event);
    console.log('socket close: ', event);
    if (!!params.reconnect && reconnectAttempts < maxReconnectAttempts) {
    reconnect = true;
    reconnectAttempts++;
    reconncetTimer = setTimeout(function () {
    connect(params, reconnectUrl, cb);
    }, reconnectionDelay);
    reconnectionDelay *= 2;
    }

      socket = null;
    

    };
    2 . 调整对应服务器端心跳时间

最后 感谢 触控团队无私的帮助

可用的pomelo整体文件pomelo.zip (14.1 KB)

1赞

一样没同步 每次修改js都编译

没有报错不过有一个警告

我看了是在我动态加载tiledMao报的警告,不知是否这个导致的。

是不是你动态加载的代码有问题,能否给一个范例,或者你在找找,官方范例并没有问题,你看看 result 是什么数据,先调试一下,这里报的警告就是说没有图片

这里是调用堆栈你跟进去看看

每次更改脚本名称都会报之前那个脚本找不到的错误。然后就启动不了游戏。只有重新启动creator才能恢复正常

1.5.2没问题,到1.6就出事了。官方的范例有动态加载tiledMap?

是不是因为你们加上md5的关系导致文件名和tiled文本数据里的图片名不一致导致的?????

在tiled中保存的是58-1.jpg。可是现在打包后加上md5了。实际上名字应该是58-1.md5数值.jpg吧

有可能,我了解一下,你按照 jare 的方式操作吧

请用 cc.loader.loadRes 加载纹理,textureCache 操作的是最终文件,如果非要用 textureCache 那就只能构建时禁用 md5。

这个问题下个版本会修正

。。。这个代码是你们内部代码。。。 不是我自己写的加载代码

。。。。,好吧,我修复一下

1.6的工程改了代码,构建到android studio还不行,没次都需要“编译”,一次5分钟…编译这玩意儿:libs/armeabi-v7a/libcocos2djs.so 请问这是引擎设定还是我姿势不对?

上面贴子反馈到游戏玩到一段时间后字体会变得很小,今天调了一下终于找到原因了,是js_manual_conversions.cpp修改引起的,先上图看看问题:

原因发生在js_manual_conversions.cppjsval_to_TTFConfig函数中,1.6的代码是:

        if (JS_GetProperty(cx, tmp, "fontSize", &js_fontSize) && js_fontSize.isInt32())
        {
            ret->fontSize = js_fontSize.toInt32();
        }
        
        if (JS_GetProperty(cx, tmp, "outlineSize", &js_outlineSize) && js_outlineSize.isInt32())
        {
            ret->outlineSize = js_outlineSize.toInt32();
        }

fontSize表现出来的是isDouble,而不是isInt32,所以导致ret->fontSize没被设置到,就用了默认值=12。

而1.5.x的代码是这样的:

        if (JS_GetProperty(cx, tmp, "fontSize", &js_fontSize) && !js_fontSize.isUndefined())
        {
            if (JS::ToNumber(cx, js_fontSize, &fontSize))
                ret->fontSize = (int)fontSize;
        }
        
        if (JS_GetProperty(cx, tmp, "outlineSize", &js_outlineSize) && !js_outlineSize.isUndefined())
        {
            if (JS::ToNumber(cx, js_outlineSize, &outlineSize))
                ret->outlineSize = (int)outlineSize;
        }

仅仅判断isUndefined,所以可以fontSize可以被正常设置到。

@panda @zilong 确认这个问题请回复并修改一下。 这种int和double的隐患会不会也在其他代码中也存在?

4赞