代码之家  ›  专栏  ›  技术社区  ›  Wandrille

NativeScript Angular-点击时获取X和Y事件

  •  4
  • Wandrille  · 技术社区  · 7 年前

    我正在做一个Nativescript Angular应用程序,我有一个问题。

    我不知道如何得到一个简单的点击的坐标。

    我可以通过触摸手势(TouchGestureEventData)获得坐标,但它提供了一个信息流。我只需要一个数据。

    • GestureEventData没有GetX()方法。
    • TouchGestureEventData有GetX()方法,但我只想要第一次触摸。

    public onTouch(args: TouchGestureEventData) {
         console.log(args.getActivePointers()[0].getX());
    }
    

    但是我得到了太多的数据(每个动作)。

    有没有一种方法可以通过简单的点击获得坐标?

    谢谢

    2 回复  |  直到 6 年前
        1
  •  4
  •   JoshSommer    7 年前

    如果你只想参加一个单触式活动。您可以做的是检查事件操作是否为 down up 行动例如,下面的代码将为您获取触地事件的X和Y坐标,并且每个触地事件只发生一次。

    public onTouch(e: TouchGestureEventData) {
        if (e && e.action === 'down') {
            this.xCoord = e.getX();
            this.yCoord = e.getY();
        }
    }
    
        2
  •  4
  •   bks    6 年前

    onTap(e) {
        const loc = e.ios.locationInView(e.object.ios);
        console.log("(x,y) in dp: " + loc.x + "," + loc.y);
    }  
    

    我发现了 e.ios 是该点击事件的本机对象表示,并试图查看我可以用它做什么,所以我使用了Chrome开发工具,并开始键入 e.ios.location locationInView() 自动完成。然后我在 Apple's documentation UIView 作为一个论点。所以我试过了 e.ios.locationInView(e.object); 有个例外所以我记得 UIView视图 View 上课,所以我试了 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 数据处理 ,您首先必须 import { screen } from "platform"; 然后为了得到x坐标 ,您将:
    e.android.getX() / screen.mainScreen.scale