我突然创建的所有Phaser.Sprite对象都缺少它们的2D坐标

时间:2016-05-04 16:24:23

标签: typescript sprite phaser-framework

我正在使用打字稿中的Phaser制作游戏,为了使其更易于管理,我创建了一些界面,让我的精灵实现它们。

在创建界面之前,一切正常。所有创建的Sprite都具有正确更新的2D坐标(Sprite.{x,y})。

创建接口后,新创建的Sprite不再包含xy坐标,甚至在创建后立即(Edge浏览器调试器):

Tank Debug

右侧的“观察”列表显示this的内容。如您所见,它有一个z - 坐标,但没有xy - 坐标。

我没有对基础物理设置进行任何更改,也从未明确删除属性。我没有机会,即使我想要,因为你可以看到,即使在Sprite创建之后立即检查,它们也不存在。我对基类Tank所做的唯一更改是添加tankMover属性,但正如您所看到的,它甚至不会在断点被激活时创建。

我不会/不能包含所有代码,因为我所做的更改跨越了许多文件,但没有一个会影响物理;它们基本上只是以有限的方式将速度添加到Sprite

为了确保它与Tank类没有任何关系,我在主要状态的Sprite方法中创建了一个临时create。正如您所看到的,即使在创建和添加到物理系统之后,它也没有坐标:

Temp Sprite Debug

在Phaser中,什么可能导致x的{​​{1}}和y坐标属性无法填充?

1 个答案:

答案 0 :(得分:0)

这是由两件事引起的:

  • Edge不报告Sprite的x和y坐标;即使他们存在。
  • 我意外地将this而不是this.host传递给Phaser的Phaser.Math.angleToXY函数,由于某种原因,Typecript的类型系统没有抓住它,即使这显然是错误的。

感谢微软。