标题解释了它。以下是创建文本对象的代码:
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)"颜色是正确的,但我仍然收到警告......
答案 0 :(得分:1)
所以简短的回答是,你不想做你正在做的事情。
如果您想要访问这些内容,可以尝试执行以下操作:
var statusBarHp = { graphic: '', text: '' };
然后设置statusBarHp.graphic = game.add.sprite(...);
和statusBarHp.text = game.add.text(...);
。
这可能有助于轻松访问它。但是,如果您想使用Phaser.Group
对Sprite
和Text
对象采取行动,那将是一个更好的主意。
我可能还建议不要使用' 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
,您还可以看到会发生什么。