往期记录:
【CocosCreator常见问题归纳】第一期
【CocosCreator常见问题归纳】第二期
【CocosCreator常见问题归纳】第三期
部分PR周知:
1、2.0.10微信小游戏在IOS设备上audio组件有bug
PR: https://github.com/cocos-creator-packages/weapp-adapter/pull/102
2、Cocos Creator 2.1.2 UC浏览器电脑版上无法正常运行
3、Windows平台,label问题太严重了,内存不释放
PR: https://github.com/cocos-creator/cocos2d-x-lite/pull/1783,
4、打包成 vivo 小游戏后 cc.audioEngine.AudioState 属性丢失
A:替换下 builtin\vivo-runtime\res\jsb-adapter\engine\jsb-audio.js 文件jsb-audio.zip
5、EditBox的string属性赋值为数值型数据后出现异常
PR: https://github.com/cocos-creator/engine/pull/5088/commits/4c7670faf249c380dff8a17a8d6b46107907841e
6、 label的string为null或undefined时报错
常见问题:
1、2.0版本scrollView事件类型求助
A: 由于2.0对事件系统进行了修改,事件系统现在只会对于用户输入的touch、mouse等事件抛出event对象。
scrollView节点监听的scrollview滚动事件则会抛出事件target,
所以在新版本你的方式需要做一下改变。
https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html#34-事件系统升级
这个文档解释了,为什么会这样。
2、2.1.1 3d模式的一个严重bug
Q: 当多个平面(包括精灵转3d,plane,还有box的z轴scale0.1)叠在一起而y旋转角度不同时,
平面间的绘图顺序会出现问题,类似于ps的图层一样,最后放置的物体会显示在最前,
无视空间前后关系
A: 你的 tree 用的是 sprite + 2d 的材质,没有打开深度测试,改为 plane + unlit 材质 并且 打开 alpha test 试下
3、Cocos 2.0.7版本 开启的时候报错
A: 电脑有没有其它creator?
试着把电脑上所有的creator卸载,再装你需要的版本
4、 editor 输入框无法限制输入E或e字符
A: 原因是e在数学中同样是具有数值的,所以判断他为number没有问题。
所以这不是引擎的问题。
这应该是Html5开发过程中都会遇到的问题。
在Html5中,我们可以修改input标签为如下
<input type="text" name="" oninput="this.value=this.value.replace(/[^0-9.]+/,'');" />
Cocos Creator 中我们需要自己修改引擎代码。
找到WebEditBoxImpl.js 如下图所示位置,加入红框代码。
之后编译引擎即可。
5、插件怎么监听键盘事件?
A: 可以参考electron相关文档
https://github.com/amhoho/electron-cn-docs/blob/master/tutorial/keyboard-shortcuts.md#browserwindow中的快捷键
6、IOS上依然无法正确显示TTF字体
Q: TTF字体:https://forum.cocos.com/uploads/default/original/3X/7/f/7fea8265c9d36849d0d1e99b0f0d085521a63026.zip
A:ArialRoundedMTBold这个字体本身就是系统字体,直接使用就行。
系统字体本身就已经注册过,如果使用ttf的话,注册字体的时候就会不成功,这样就直接走失败的回调,会使用默认字体替代。
解决方案:
修改Label组件为如下所示
7、使用Scheduler定时器报错
Q: error:cc.Scheduler: Illegal target which doesn’t have uuid or instanceId
A: 方案:
cc.director.getScheduler().enableForTarget(this);
cc.director.getScheduler().schedule(this.heartBeat,this,1,false);
参考:在对象没有 instanceId 的情况下, 使用这个enableForTarget来保证给对象提供一个唯一的instanceId。
这个可以参考API文档:
https://docs.cocos.com/creator/api/zh/classes/Scheduler.html#enablefortarget
或者查阅引擎源码