如何在运行时替换 PIXI.Text 对象中的文本

How to replace text in runtime in PIXI.Text object

我正在使用 PIXIJS 创建游戏。我希望在某些事件发生时替换状态消息。问题是上面添加的文本但没有删除旧文本:

这听起来很简单,但我没有在 Pixt.Text 对象的文档中找到任何更改文本的方法。 谢谢.

var statusMessage;
// create a Text Sprite from a text message
function getStausMessageSprite(message){
    var style = {font: 'bold italic 36px Arial'};
    var statusMessage = new PIXI.Text(message.value, style);
    statusMessage.x = 10;
    statusMessage.y = 550;
    return statusMessage;
}

// drawing status message (update message)
function drawStatusMessage(message) {
    // try to remove the old sprite from the stage (it still appears)
    app.stage.removeChild(statusMessage);
    // create a new Text Sprite and add it 
    statusMessage = getStausMessageSprite(message);
    app.stage.addChild(statusMessage);
}

正如 HankMoody 在他的评论中所说:更改 .text 属性。您不需要创建新对象。

function updateStatusMessage(message) {
    statusMessage.text = message.value;
}

此外,您的示例无法正确删除文本的原因可能是:
您声明一个全局 var statusMessage;,然后在 getStausMessageSprite 函数中再次声明它。我猜全局 statusMessage 不会包含新的文本对象。

删除第二个变量,它可能会起作用:

// create a Text Sprite from a text message
function getStausMessageSprite(message){
    var style = {font: 'bold italic 36px Arial'};
    statusMessage = new PIXI.Text(message.value, style);
    statusMessage.x = 10;
    statusMessage.y = 550;
    return statusMessage;
}


最后注意:我最近了解到,如果您使用 let 而不是 var,它不会让您重新声明变量并给出错误。

  var textObj = new PIXI.Text('sample', {
  fontFamily: 'Rokkitt',
  fontStyle: 'normal',
  fontWeight: '600',
  fontSize: 32,
  fill: '#F5F5F5'
});textObj.text = "update val"

我们可以使用 textObj.text.

在运行时替换文本