如何在运行时替换 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.
在运行时替换文本
我正在使用 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.
在运行时替换文本