首页 > 解决方案 > 如何在运行时替换 PIXI.Text 对象中的文本

问题描述

我使用 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);
}

标签: javascriptpixi.js

解决方案


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

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

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

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

// 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,它不会让你重新声明一个变量并给出一个错误。


推荐阅读