在 PlayN 中,如果我缩放了根层(例如,比例为 2.0),当我在屏幕上检测到鼠标点 10,10 并将其绘制在屏幕上时,显示的点是我在操作系统上看到的距离的两倍鼠标点。
我想要的是我拖动的对象以与我移动操作系统鼠标指针完全相同的距离移动。
是否有一个坐标映射函数可以将我的鼠标输入 X/Y 映射到我的逻辑缩放坐标系?
谢谢。
在 PlayN 中,如果我缩放了根层(例如,比例为 2.0),当我在屏幕上检测到鼠标点 10,10 并将其绘制在屏幕上时,显示的点是我在操作系统上看到的距离的两倍鼠标点。
我想要的是我拖动的对象以与我移动操作系统鼠标指针完全相同的距离移动。
是否有一个坐标映射函数可以将我的鼠标输入 X/Y 映射到我的逻辑缩放坐标系?
谢谢。
你有两个选择。您可以Pointer.Listener
在根图层上注册您的并用于Pointer.Event.localX/Y
获取图层坐标系中的鼠标坐标:
graphics().rootLayer().addListener(new Pointer.Adapter() {
public void onPointerStart(Pointer.Event event) {
// use event.localX() and event.localY() here
}
});
或者您可以注册一个全局Pointer.Listener
并使用Layer.Util
手动翻译点:
pointer().addListener(new Pointer.Adapter() {
public void onPointerStart(Pointer.Event event) {
Point local = Layer.Util.screenToLayer(graphics().rootLayer(), event.x(), event.y());
// use local.x and local.y here
}
});