我创建的所有 Phaser.Sprite 个对象突然丢失了它们的 2D 坐标
All Phaser.Sprite objects I create suddenly are missing their 2D coordinates
我正在使用 Typescript 中的 Phaser 制作游戏,为了让它更易于管理,我创建了一些界面,并让我的 Sprites 实现了它们。
在我创建接口之前,一切正常。所有创建的 Sprites 都有正确更新的 2D 坐标 (Sprite.{x,y}
)。
虽然在我创建接口之后,新创建的 Sprite
s 不再包含 x
和 y
坐标,即使是在创建后立即(边缘浏览器调试器):
右侧的"watch"列表显示this
的内容。如您所见,它有一个 z
坐标,但没有 x
或 y
坐标。
我没有对基础物理设置进行任何更改,也从未明确删除属性。我没有机会,即使我想,因为正如你在上面看到的,即使在 Sprite
创建后立即检查它们也不存在。我对 base-class Tank
所做的唯一更改是添加 tankMover
属性,但如您所见,断点时它甚至还没有创建已激活。
我不会t/can不包含所有代码,因为我所做的更改跨越许多文件,但 none 的影响物理;他们基本上只是以有限的方式增加 Sprite
的速度。
为了确保它与 Tank
class 没有任何关系,我在主状态的 create
方法中创建了一个临时 Sprite
.如您所见,即使在创建并添加到物理系统之后,它也没有坐标:
在 Phaser 中,什么会导致 Sprite
的 x
和 y
坐标属性无法填充?
这是由两件事造成的:
- Edge 不报告 Sprite 的 x 和 y 坐标;即使它们存在。
- 我不小心将
this
而不是 this.host
传递给了 Phaser 的 Phaser.Math.angleToXY
函数,由于某种原因 Typescript 的类型系统没有捕捉到它,尽管它显然是错误的。
感谢微软。
我正在使用 Typescript 中的 Phaser 制作游戏,为了让它更易于管理,我创建了一些界面,并让我的 Sprites 实现了它们。
在我创建接口之前,一切正常。所有创建的 Sprites 都有正确更新的 2D 坐标 (Sprite.{x,y}
)。
虽然在我创建接口之后,新创建的 Sprite
s 不再包含 x
和 y
坐标,即使是在创建后立即(边缘浏览器调试器):
右侧的"watch"列表显示this
的内容。如您所见,它有一个 z
坐标,但没有 x
或 y
坐标。
我没有对基础物理设置进行任何更改,也从未明确删除属性。我没有机会,即使我想,因为正如你在上面看到的,即使在 Sprite
创建后立即检查它们也不存在。我对 base-class Tank
所做的唯一更改是添加 tankMover
属性,但如您所见,断点时它甚至还没有创建已激活。
我不会t/can不包含所有代码,因为我所做的更改跨越许多文件,但 none 的影响物理;他们基本上只是以有限的方式增加 Sprite
的速度。
为了确保它与 Tank
class 没有任何关系,我在主状态的 create
方法中创建了一个临时 Sprite
.如您所见,即使在创建并添加到物理系统之后,它也没有坐标:
在 Phaser 中,什么会导致 Sprite
的 x
和 y
坐标属性无法填充?
这是由两件事造成的:
- Edge 不报告 Sprite 的 x 和 y 坐标;即使它们存在。
- 我不小心将
this
而不是this.host
传递给了 Phaser 的Phaser.Math.angleToXY
函数,由于某种原因 Typescript 的类型系统没有捕捉到它,尽管它显然是错误的。
感谢微软。