Pixi.js: Ширина BitmapText после изменения текста

Созданный на 22 сент. 2020  ·  3Комментарии  ·  Источник: pixijs/pixi.js

Ожидаемое поведение

Текущее поведение

Создайте экземпляр PIXI.BitmapText с этим текстом «1111111111111111111111111». Запомните его ширину, затем измените текст на «1» и снова проверьте ширину, она будет такой же.

Возможное решение

Эта проблема возникает, когда экземпляр PIXI.BitmapText имеет экземпляр PIXI.Mesh в качестве дочерних элементов с более чем 199 вершинами.

Действия по воспроизведению

https://pixijs.io/examples/#/text/bitmap -text.js
Вставьте этот код:

const app = new PIXI.Application({ backgroundColor: 0x1099bb });
document.body.appendChild(app.view);

app.loader
    .add('desyrel', 'examples/assets/bitmap-font/desyrel.xml')
    .load(onAssetsLoaded);

function onAssetsLoaded() {
    const bitmapFontText = new PIXI.BitmapText('11111111111111111111111111111111111111111111111', { font: '55px Desyrel'});
    console.log(bitmapFontText.width);
    bitmapFontText.x = 50;
    bitmapFontText.y = 200;
    bitmapFontText.text = '1';
    console.log(bitmapFontText.width);
    app.stage.addChild(bitmapFontText);
}

Среда

  • pixi.js версия : 5.3.2
  • Браузер и версия : Chrome 85
  • ОС и версия : Windows 10
🕷 Bug

Самый полезный комментарий

Вот версия JSFiddle:
https://jsfiddle.net/bigtimebuddy/syt6gdpb/

Насколько я понимаю, эта проблема возникает из-за того, что мы не очищаем буфер вершин, когда новый текст меньше предыдущего.
Проверьте, как работает это условие
image

Все 3 Комментарий

Вот версия JSFiddle:
https://jsfiddle.net/bigtimebuddy/syt6gdpb/

Вот версия JSFiddle:
https://jsfiddle.net/bigtimebuddy/syt6gdpb/

Насколько я понимаю, эта проблема возникает из-за того, что мы не очищаем буфер вершин, когда новый текст меньше предыдущего.
Проверьте, как работает это условие
image

Вероятно, обнуление буфера вершин решило бы эту проблему, если бы он не был создан заново.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги