为什么 Phaser 的 setText() 会导致 CSS 警告"Expected color but found '0'."?



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.GroupSpriteText对象进行操作,那将是一个更好的主意。

我也可能建议不要使用"文本"作为对象的名称,因为那样你就会遇到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会发生什么。

相关内容

最新更新