为什么Phaser的setText()导致CSS警告"预期的颜色但发现' 0'。"?

时间:2016-01-28 18:34:40

标签: javascript css text warnings phaser-framework

标题解释了它。以下是创建文本对象的代码:

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)"颜色是正确的,但我仍然收到警告......

1 个答案:

答案 0 :(得分:1)

所以简短的回答是,你不想做你正在做的事情。

如果您想要访问这些内容,可以尝试执行以下操作:

var statusBarHp = { graphic: '', text: '' };

然后设置statusBarHp.graphic = game.add.sprite(...);statusBarHp.text = game.add.text(...);

这可能有助于轻松访问它。但是,如果您想使用Phaser.GroupSpriteText对象采取行动,那将是一个更好的主意。

我可能还建议不要使用' text'作为对象的名称,从那时起你就会遇到statusBarHp.text.text = 'new text'的奇怪现象。你未来的自我可能会因此而感到困惑,因为对你的代码(我)很新鲜的人是。

至于错误,我的猜测是Phaser可能会因为你劫持标准的Sprite对象来添加Text对象而感到困惑。 JS并不是那么关心它可能会起作用,但这又是一种不好的做法,并且有更好的方法来解决这个问题。

编辑:

在聊天并看到游戏正在运行后,我不得不禁用然后在Firefox控制台中启用CSS选项卡。 (我希望在标准控制台中抛出错误。)

从我可以确定这些是警告,并且似乎是Phaser框架将数据传递到Firefox的问题。框架可能会将颜色值截断为' 0' 0在某一点。见https://karinacode.wordpress.com/2010/01/28/expected-color-but-found-0/

我的建议是忽略这些。您还可以看到是否有人深入研究Phaser框架本身(并且可能了解Canvas / WebGL,因为它发生在两种类型的游戏中)可以解释为什么Firefox会抛出此警告。

如果您将#000000切换为black或甚至#010101,您还可以看到会发生什么。