Jquery 如何在Phaser中正确设置精灵的坐标?

Jquery 如何在Phaser中正确设置精灵的坐标?,jquery,coordinates,phaser-framework,Jquery,Coordinates,Phaser Framework,我有一个密码: w = window.innerWidth * window.devicePixelRatio, h = window.innerHeight * window.devicePixelRatio; holdLeft = game.add.button(w/2.892, h/1.3092, 'holdLeft', this.holdLeft, this); 我在设置这个精灵的坐标时遇到了问题,例如,我不知道这个精灵应该在哪里,我需要想出一些坐标,但我总是需要一次又一次地改

我有一个密码:

 w = window.innerWidth * window.devicePixelRatio,
 h = window.innerHeight * window.devicePixelRatio;

 holdLeft = game.add.button(w/2.892, h/1.3092, 'holdLeft', this.holdLeft, this);
我在设置这个精灵的坐标时遇到了问题,例如,我不知道这个精灵应该在哪里,我需要想出一些坐标,但我总是需要一次又一次地改变它

也许还有其他更简单的方法

提前谢谢你


我会非常感激的

与图像和精灵一样,Phaser.Button有一个
anchor
属性,默认设置为(0,0)(左上角)。您可以将其设置为按钮宽度的一半和高度的一半,如下所示:

holdLeft.anchor.set(0.5, 0.5);

首先,如果您想根据游戏大小来定位按钮,您可能应该使用更可靠的game.width/game.height

现在,如果你想根据屏幕大小调整按钮的位置,没有神奇的解决方案。例如关于这个话题。您应该决定从哪个原点定位每个UI元素,无论是屏幕角、屏幕中心、游戏对象等,并预测如果分辨率发生变化,结果会如何

例如,如果您希望在屏幕中央有一个方形弹出窗口,您可以执行以下操作:

var popup = game.add.sprite(game.width/2, game.height/2, 'popup');
popup.width = 400;
popup.height = 400;
popup.anchor.set(0.5, 0.5);
现在要给它一个标题,您可能需要根据弹出窗口本身来定位它:

var text = game.add.sprite(popup.x, popup.y + 10, 'Hello world');
text.anchor.set(0.5, 0);

等等。没有一种解决方案可以适用于所有人,但要弄清楚是什么使用了什么作为原点,希望在调整屏幕大小时你不会感到意外。

WOW!非常感谢你!!太棒了!