记录白鹭接玩一玩的坑
1.游戏内所有文字往下偏移
这是因为 egret.brick.js
在将 TextField 转为 BKTextField 时计算高度有问题,修改如下:
// 修改前 BKCanvasRenderer.prototype.renderText = function (node, context) { ... context.fillText(text, x + context.$offsetX, -y + context.$offsetY + node.height); } // 修改后 BKCanvasRenderer.prototype.renderText = function (node, context) { ... context.fillText(text, x + context.$offsetX, -y + context.$offsetY + node.height + context.lineWidth + 2); // 解决文字整体下移的问题 }
2.WebSocket 无法使用, 增加和修改: scripts/bricks/bricks.ts文件
let key = '' for (let i = 0; i < jsonData.initial.length;) { if (jsonData.initial[i] == 'js/socket.js' || jsonData.initial[i] == 'js/socket.min.js') { key = jsonData.initial[i] jsonData.initial.splice(i, 1) break } else { i++ } } for (let i = 0; i < jsonData.initial.length; i++) { if (jsonData.initial[i] == "js/egret.js" || jsonData.initial[i] == 'js/egret.min.js') { jsonData.initial.splice(i + 1, 0, key) break } } let content = ''; content += `BK.Script.loadlib("GameRes://js/promise.js");\n`; for (let item of jsonData.initial) { if (item != 'js/promise.js' && item != 'js/promise.min.js') { content += `BK.Script.loadlib("GameRes://${item}");\n` } if (item == "js/socket.js" || item == 'js/socket.min.js') { content += `BK.Script.loadlib("GameRes://egret.bricks.js");\n` } }
3.egret除了默认字体外,其他字体会报错,我从电脑系统中提取字体放入resource文件下导入, 修改egret.bricks.js文件:
//修改前 var path = fontFamily.indexOf("GameRes://") >= 0 || fontFamily.indexOf("GameSandBox://") >= 0 ? fontFamily : "GameRes://" + fontFamily; //修改后 var path = "GameRes://resource/assets/font/" + fontFamily.toLowerCase() + ".ttf"