skyfish-qc / pixi-miniprogram

一个可运行于微信小程序的PIXI引擎,通过模拟window环境,有些功能小程序无法模拟,就直接修改了PIXI引擎代码,最终使得PIXI引擎正常运行在小程序上
MIT License
126 stars 34 forks source link

修复无法使用PIXI.Text #7

Closed lqloveball closed 3 years ago

lqloveball commented 3 years ago
// 在编译文件 index.js 绑定canvas2d
window.canvas2d=canvas2d;

然后修改 TextMetrics canvas的索引

/**
     * Cached canvas element for measuring text
     *
     * @memberof PIXI.TextMetrics
     * @type {HTMLCanvasElement}
     * @private
     */
    TextMetrics._canvas = window.canvas2d;

    /**
     * Cache for context to use.
     *
     * @memberof PIXI.TextMetrics
     * @type {CanvasRenderingContext2D}
     * @private
     */
    TextMetrics._context =  window.canvas2d.getContext('2d');

实测解决

lqloveball commented 3 years ago

真机还存在问题

skyfish-qc commented 3 years ago

你这个还是没传那个canvas2d元素,canvas2d那个记得是要2d类型的,不能是webgl类型的

skyfish-qc commented 3 years ago

还有正如readme那里提到,这个不支持动态字体,因为动态字体是需要动态创建canvas的,而小程序不能动态创建canvas,如果只有一个位置,是可以传canvas2d进去,但如果有很多地方的,那个只有一个canvas2d,就只能显示一个字了,更新了其它地方的也一起更新

skyfish-qc commented 3 years ago

这个后面可能会重写一下这个text逻辑,使得只有一个canvas2d也能使用,目前还是建议使用bitmapfont