NativeScript Angular - 在点击事件时获取 X 和 Y
NativeScript Angular - Get X and Y on tap event
我正在做一个 Nativescript-Angular-App 但我遇到了问题。
用户必须点击图片上的正确位置。
我不明白如何获取简单点击的坐标。
我可以通过触摸手势 (TouchGestureEventData) 获取坐标,但它提供了信息流。我只想要一个数据。
- GestureEventData 没有 GetX() 方法。
- TouchGestureEventData 有 GetX() 方法,但我只想要第一次触摸。
我试过触摸:
public onTouch(args: TouchGestureEventData) {
console.log(args.getActivePointers()[0].getX());
}
但是我得到了太多数据(每个动作)。
有没有办法一键获取坐标?
谢谢!
如果你只是想获取单点触摸事件。您可以做的是检查事件操作是 down
操作还是 up
操作。例如,下面的代码只会为您提供触摸事件的 X 和 Y 坐标,并且每个触摸事件只会发生一次。
public onTouch(e: TouchGestureEventData) {
if (e && e.action === 'down') {
this.xCoord = e.getX();
this.yCoord = e.getY();
}
}
一直在研究这个问题,并在 iOS 中找到了点击事件的方法:
onTap(e) {
const loc = e.ios.locationInView(e.object.ios);
console.log("(x,y) in dp: " + loc.x + "," + loc.y);
}
我发现 e.ios
是那个点击事件的本地对象表示,并试图看看我能用它做什么,所以我使用了 Chrome DevTools,并开始输入 e.ios.location
,并得到 locationInView()
自动完成。然后我在 Apple's documentation 中搜索它,发现该函数得到一个 UIView
作为参数。所以我尝试了 e.ios.locationInView(e.object);
并得到了一个异常,所以我记得 UIView
是 nativescript View
class 的 iOS 表示,所以我尝试了 e.ios.locationInView(e.object.ios);
并得到 CGPoint
表示视图中的点击坐标。
重要的是要注意 loc.x
和 loc.y
以 dp
为单位。
Android 就简单多了:
onTap(e) {
const x = e.android.getX();
const y = e.android.getY();
console.log("(x,y) in pixels: " + x + "," + y);
}
重要的是要注意,在这种情况下,坐标以 pixel
为单位,因此为了将其转换为 dp
,您首先必须 import { screen } from "platform";
导入的位置,然后为了获得 dp
中的 x 坐标,您将:
e.android.getX() / screen.mainScreen.scale
我正在做一个 Nativescript-Angular-App 但我遇到了问题。
用户必须点击图片上的正确位置。
我不明白如何获取简单点击的坐标。
我可以通过触摸手势 (TouchGestureEventData) 获取坐标,但它提供了信息流。我只想要一个数据。
- GestureEventData 没有 GetX() 方法。
- TouchGestureEventData 有 GetX() 方法,但我只想要第一次触摸。
我试过触摸:
public onTouch(args: TouchGestureEventData) {
console.log(args.getActivePointers()[0].getX());
}
但是我得到了太多数据(每个动作)。
有没有办法一键获取坐标?
谢谢!
如果你只是想获取单点触摸事件。您可以做的是检查事件操作是 down
操作还是 up
操作。例如,下面的代码只会为您提供触摸事件的 X 和 Y 坐标,并且每个触摸事件只会发生一次。
public onTouch(e: TouchGestureEventData) {
if (e && e.action === 'down') {
this.xCoord = e.getX();
this.yCoord = e.getY();
}
}
一直在研究这个问题,并在 iOS 中找到了点击事件的方法:
onTap(e) {
const loc = e.ios.locationInView(e.object.ios);
console.log("(x,y) in dp: " + loc.x + "," + loc.y);
}
我发现 e.ios
是那个点击事件的本地对象表示,并试图看看我能用它做什么,所以我使用了 Chrome DevTools,并开始输入 e.ios.location
,并得到 locationInView()
自动完成。然后我在 Apple's documentation 中搜索它,发现该函数得到一个 UIView
作为参数。所以我尝试了 e.ios.locationInView(e.object);
并得到了一个异常,所以我记得 UIView
是 nativescript View
class 的 iOS 表示,所以我尝试了 e.ios.locationInView(e.object.ios);
并得到 CGPoint
表示视图中的点击坐标。
重要的是要注意 loc.x
和 loc.y
以 dp
为单位。
Android 就简单多了:
onTap(e) {
const x = e.android.getX();
const y = e.android.getY();
console.log("(x,y) in pixels: " + x + "," + y);
}
重要的是要注意,在这种情况下,坐标以 pixel
为单位,因此为了将其转换为 dp
,您首先必须 import { screen } from "platform";
导入的位置,然后为了获得 dp
中的 x 坐标,您将:
e.android.getX() / screen.mainScreen.scale