javascript - 如何在运行时替换 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);
}
解决方案
正如 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
,它不会让你重新声明一个变量并给出一个错误。
推荐阅读
- javascript - 使用 window.scrollTo({top: 50}) 与 window.scrollTo(0, 50) 有区别吗?
- c# - 在 C# 中使用相同的数据返回上一个表单
- visual-studio-2019 - NuGet System.Windows.Forms.DataVisualization 包之间的差异
- amazon-web-services - AWS 负载均衡器无法正确路由流量
- shopify - Shopify 使用特定模板获取所有集合
- php - 从 XML 提要中的文本元素中提取 img src
- javascript - 重新加载页面时如何保持灯箱图像打开?
- python - 为什么我的代码在我还没有提出时在自定义异常类中执行
- r - 如何按特定标准拆分 R 中的数据?
- spring-boot - org.hibernate.id.IdentifierGenerationException:必须在调用 save() 之前手动分配此类的 id:com.robicciportal.entity.Dnd