刚上手cocos creator插件一周左右,按照自己的工作流程,做了两个插件,一个用了codemirror做了一个自己编码习惯的内置IDE,就不用在vscode和creator之间来回切换,然后做了一个bmpfont的快捷编辑器,可以根据已有的fnt进行快速添加和调整
在这个过程中,发现了一个问题,就是creator中,比较暴力地监听了window的keydown事件,在我第一个插件中,需要用四个方向键进行位置微调,结果上下按键直接变成了页面上按钮的焦点跟踪,而且发现在页面上没有任何可以获取焦点的ui-kit组件时,控制台直接报错了.原因是代码中出现了null错误, 那么我就用document.keydown事件来覆盖了window.keydown的事件(阻止冒泡),那么问题就解决了.
在我写代码编辑器的时候发现,同样的问题出现了, window.keydown事件,在针对 keyCode == 9 时,直接阻止了冒泡,那么我编辑器的tab键完全没办法用来缩进了,我只好非常暴力地,在Editor的私有变量上进行注入才解决了:
let o1 = Editor.UI._FocusMgr._focusNext; let o2 = Editor.UI._FocusMgr._focusPrev; Editor.UI._FocusMgr._focusNext = (...args)=>{ // 强行覆盖了tab if(!this.codeMirrorFocused) {o1(...args);return} CodeMirror.commands.indentMore(myCodeMirror); } Editor.UI._FocusMgr._focusPrev = (...args)=>{ // 强行覆盖了ctrl+tab if(!this.codeMirrorFocused) {o2(...args);return} CodeMirror.commands.indentLess(myCodeMirror) }
建议插件组的童鞋,可以给出一个灵活控制 keydown的方式,比如说 Editor.UI.foucsNavSwitch(true|false);让插件开发过程中可以自行处理.
另请问一下, 因为文档比较少,使用外部应用打开文件的方法是什么(相当于在asset列表中对一个js文件进行双击)? 在浏览器可以搜索出来的代码中找不到,你们的asar加密过了,解不开…

