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

Why does Phaser's setText() cause a CSS warning "Expected color but found '0'."?

标题说明了。这是创建我的文本的代码 object:

statusBarHP.text = game.add.text(0, 0, '', {
    font:"16px Arial",
    fill:"#ffffff",
    stroke:"#000000",
    strokeThickness:2
});

包含文本的 object 的代码:

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(...);.

这可能有助于轻松访问它。但是,如果您想对 SpriteText 对象都使用 Phaser.Group 会是一个更好的主意。

我可能还建议不要使用 'text' 作为对象的名称,因为那样的话你 运行 就会与 statusBarHp.text.text = 'new text' 产生反感。您未来的自己可能会对此感到困惑,就像刚接触您的代码的人(我)一样。

至于错误,我猜 Phaser 可能会感到困惑,因为您劫持了标准 Sprite 对象以添加 Text 对象。 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.

会发生什么