Title解释了它。以下是创建文本对象的代码:
statusBarHP.text = game.add.text(0, 0, '', {
font:"16px Arial",
fill:"#ffffff",
stroke:"#000000",
strokeThickness:2
});
保存文本的对象的代码:
statusBarHP = game.add.sprite(0, 0, 'status-bar-red');
我用来更改更新函数中的文本的代码:
statusBarHP.text.setText(Math.floor(player.health) + '/' + player.max_health);
每次我使用 setText() 时都会发生这种情况。我尝试将填充和描边设置为"rgb(255, 255, 255)"和"rgb(0, 0, 0)"并且颜色正确,但我仍然收到警告...
所以简短的回答是,你不想做你正在做的事情。
如果您想访问这些内容,可以尝试执行以下操作:
var statusBarHp = { graphic: '', text: '' };
然后设置statusBarHp.graphic = game.add.sprite(...);
和statusBarHp.text = game.add.text(...);
.
这可能适用于轻松访问它。但是,如果要使用Phaser.Group
对Sprite
和Text
对象进行操作,那将是一个更好的主意。
我也可能建议不要使用"文本"作为对象的名称,因为那样你就会遇到statusBarHp.text.text = 'new text'
的奇怪之处。你未来的自己可能会对此感到困惑,就像一个对你的代码(我)很陌生的人一样。
至于错误,我的猜测是 Phaser 可能会感到困惑,因为您正在劫持标准精灵对象来添加文本对象。JS不太在乎,它可能会起作用,但同样这是一个不好的做法,有更好的方法来解决这个问题。
编辑:
聊天并看到游戏运行后,我不得不禁用然后启用 Firefox 控制台中的 CSS 选项卡。(我预计标准控制台中会抛出错误。
据我所知,这些是警告,并且似乎是 Phaser 框架将数据传递到 Firefox 的问题。框架可能会在某个时候将颜色值截断为"0"。见 https://karinacode.wordpress.com/2010/01/28/expected-color-but-found-0/
我的建议是忽略这些。你也可以看看是否有人深入研究了Phaser框架本身(也许对Canvas/WebGL有所了解,因为它发生在两种类型的游戏中)可以解释为什么Firefox会发出这个警告。
您还可以看到如果您#000000
切换到 black
甚至#010101
会发生什么。