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

3

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

只需更改 statusMessage.text 属性,这里是文档链接:http://pixijs.download/release/docs/PIXI.Text.html#text - HankMoody
2个回答

1
正如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,它不会让你重新声明一个变量,而是会给出错误提示。

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

我们可以使用 textObj.text 在运行时替换文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接