2.1.0升级2.1.2后碰到的一些问题

我给出部分代码吧

export class UICfg {
    public static get SCR_DESIZE_SIZE() {
        return cc.size(1366, 768);
    }
    public static get SCR_SIZE() {
        return cc.view.getVisibleSize();
    }
    public static get SCR_W() {
        return cc.view.getVisibleSize().width;
    }
    public static get SCR_CW() {
        return cc.view.getVisibleSize().width / 2;
    }
    public static get SCR_H() {
        return cc.view.getVisibleSize().height;
    }
    public static get SCR_CH() {
        return cc.view.getVisibleSize().height / 2;
    }
    public static get SCR_EDGE() {
        return Math.max(0, UICfg.SCR_CW - 768);
    }
}

if(cc.view.getVisibleSize().width == 0 || cc.view.getVisibleSize().height == 0) {
    if(CC_DEV) {
        cc.assert(false, "fatal error");
    }
}

因为其它的地方, 有常量初始化的时候会间接调用到cc.view.getVisibleSize

MAC上SAFARI声音的问题, 应该是很容易就会出.
我还是给个示例工程吧
NewProject212.zip (950.5 KB)

我现在用的2.1.1的项目,想升级到2.1.2的新引擎,但是我再2.1.1的原生上面添加了很多东西,需要我再重新build,重新再添加一遍吗。
我试了构建模板,卡在 copy-build-templates,进度条不会动,该怎么办? 如果让我再把原生的东西集成一遍,显然不可能阿。 有解决办法吗

今天试了github上的2.2, 2.1.3的audio目录的两个文件, 正数的问题依然存在, 难道是我弄错了?
WIN10 EDGE浏览器.

总结一下

  1. 性能问题, 目前发现在个别 MAC SAFARI 上面会有明显下降, 原因不明

  2. MAC SAFARI 上声音不播放的问题, 无论是 2.1.0 还是 2.1.2, 都不播放, 网上有说法是要把浏览器的声音打开. 但奇怪的是, 我有另一个项目 2.1.0, 却没这个问题. 原因不明.

  3. 关于 SAFARI/EDGE 浏览器的正数问题, 我目前有临时的解决方案. 不过 github 上我试过 2.1.3 和 2.2.0 的 audio 目录下的两个文件, 问题仍然存在.

  4. cc.view.getVisibleSize 的问题, 倒还问题不大. 不建议把 cc.game._prepareFinished 改动, 那个修改其实并不好.

  5. 建议下个版本把 textUtil 导出到 cc 中

  6. 粒子拖尾的问题, 把如下的代码注释掉可以临时应付
    this.positionType = parseFloat(dict[‘positionType’] || PositionType.RELATIVE);

  7. F11无法全屏的问题, 如下代码

    _t._rpShowAll = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.SHOW_ALL);
    要改成
    if (cc.sys.isBrowser && !cc.sys.isMobile) {
    _t._rpShowAll = new cc.ResolutionPolicy(_strategyer.PROPORTION_TO_FRAME, _strategy.SHOW_ALL);
    }
    else {
    _t._rpShowAll = new cc.ResolutionPolicy(_strategyer.EQUAL_TO_FRAME, _strategy.SHOW_ALL);
    }

  8. cc.Sprite的setState/getState 未实现的问题, 可以在 cc.Button 中找到答案, 临时解决

  9. 目前编辑器不能指定插件脚本仅仅给编辑器使用, 建议后续版本可以.

这次升级算是有惊无险.

windows 这个声音正数问题你是怎么解决的?替换了之前的andio么?

谢谢反馈,我们进行会跟进

这个问题我们已经建立 issue,谢谢反馈

嗯…… 可以考虑。目前你可以先在代码里用 if (CC_EDITOR) 判断一下。

这个算是 label 自己使用的,没有打算开放给用户,你需要用它做什么?

这个具体表现是什么情况呢?(可否在描述一下?)之前有修复 positionType 的问题,不知道是否跟这个有关系?

MAC SAFARI 上声音不播放的问题, 无论是 2.1.0 还是 2.1.2, 都不播放, 网上有说法是要把浏览器的声音打开. 但奇怪的是, 我有另一个项目 2.1.0, 却没这个问题. 原因不明.

https://github.com/cocos-creator/engine/pull/4991/files

浏览器声音播放问题可以参考这个 pr 的修复
不能播放是因为浏览器的安全限制,需要用户交互之后才能播放声音

2.1.2使用上面的方法修改在Microsoft edge 上面还是播放声音没有效果,并且会报错:
WEBAUDIO17047: Time constant 必须是正数。
SCRIPT5022: SCRIPT5022: InvalidAccessError

声音是两个问题

  1. 需要正数的问题
    this.gainObj[‘gain’].setTargetAtTime(this.volume, this._context.currentTime, 0)中最后的的0改为0.01, 有两处. 这个是临时方案
  2. MAC SAFARI声音播放无声音问题
    https://github.com/cocos-creator/engine/pull/4991

我不知道能不能解释清楚, 有一个插件脚本和一个JSON文件, 都是描述的多语言字符串, 相同的内容. 插件脚本给编辑器用, 正式发布用的是JSON. 因为文件较大, 希望发布的时候, 不要带上那个插件脚本.

想在外部注入代码修改断字规则, 不过这个也没什么. 目前发现引擎的断字规则不能正确处理越南语言.

目前用 CC_EDITOR 判断一下即可。构建时内容会剔除掉的。

2.1.2的引擎每次打开的时候应该会编译吧?打断点看到也是更改后的,但是为什么没生效呢,还需要额外用node编译一次?

改引擎代码后要编译引擎:
命令行切换到CocosCreator/resources/engine目录下
运行
gulp build --max_old_space_size=4096

https://github.com/cocos-creator/engine/pull/4910/files
这个是 edge 浏览器的相关修复,可以参考下

1赞