关于Egret项目升级引擎出现的问题
Egret游戏项目,因需求把egret引擎由5.2.16升级为5.4.1,组件 eui.EditableText 出现了失去焦点后马上清空输入框文本的情况。
问题定位
由源码5.4.1的 EditableText.ts 可知,EditableText 失去焦点时会调用 onfocusOut方法,
我们由浏览器一步一步调试,可以找到 HTML5Stage 的 textValue 的临时变量一直都是空的。
而 textValue 这个值呢,每当输入框输入一个字符都会调用 _onInput方法 保存到这个变量上。
但是在游戏内的egret源码上,发现上面这个方法永远都不会调用到。因为inputLock 初始是 false ,红框内的 if 判断永远都没法进入。
最后由游戏内 egret.js 文件发现当前 Egret 的版本号是5.4.0的。
总结
原来是引擎升级过程中出现了问题,先升级到5.4.0然后再升级到5.4.1,对应的引擎源码文件没有替换。
虽然浪费了一些时间,但是也享受debug的过程,享受找bug的过程。