HarmonyOS 鸿蒙Next点击时获取屏幕中点击位置的绝对坐标值

HarmonyOS 鸿蒙Next点击时获取屏幕中点击位置的绝对坐标值

import router from '@ohos.router';

import {ABTestExamplePage} from 'bbt_abtest'

import { UIContext, UIObserver } from '@ohos.arkui.UIContext';

import { FrameNode } from '@kit.ArkUI';

@Entry

@Component

struct TestEntryPage {

  @State message: string = 'Hello World';

  aboutToAppear(): void {

    let callback = (event: GestureEvent, frameNode?: FrameNode) => {

      event.offsetX;

      event.velocityX;

    };

    let observer: UIObserver = this.getUIContext().getUIObserver();

    observer.on('willClick', callback);

  }

  build() {

    Row() {

      Column() {

        Text(this.message)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

        Button('跳转权限测试')

          .fontSize(30)

          .fontWeight(FontWeight.Bold).onClick(()=>{

        })

        Button('跳转网络测试页面')

          .fontSize(30)

          .fontWeight(FontWeight.Bold).onClick(()=>{

        }).margin(10)

        Button('Routerc测试').onClick(()=>{

        })

        Button('跳转ABTest测试页面')

          .fontSize(30)

          .fontWeight(FontWeight.Bold).onClick(()=>{

        }).margin(10)

      }

      .width('100%')

    }

    .height('100%')

  }

}

我点击最上边的按钮,event: GestureEvent关于x轴的取值只能拿到

event.offsetX;

event.velocityX;

但是这两个属性没有值,打断点的话,能看到对应还有displayX之类的属性但是无法通过even.的形式拿到


更多关于HarmonyOS 鸿蒙Next点击时获取屏幕中点击位置的绝对坐标值的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
点击事件可以用ClickEvent,参考:
深色代码主题
复制
let callback = (event: ClickEvent, frameNode?: FrameNode) => {

event.windowX

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-events-click-V5#clickevent对象说明

更多关于HarmonyOS 鸿蒙Next点击时获取屏幕中点击位置的绝对坐标值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,要获取屏幕中点击位置的绝对坐标值,可以通过事件监听器来实现。以下是一个基本的实现思路:

  1. 设置点击事件监听器: 为需要获取点击位置的组件(如整个页面或某个按钮)设置点击事件监听器。

  2. 获取点击事件中的坐标信息: 在点击事件处理函数中,通过事件对象获取点击位置的坐标信息。

  3. 坐标转换: 如果需要将点击位置的坐标从组件坐标系转换为屏幕坐标系,可以使用相应的API进行转换。

  4. 存储或处理坐标值: 将获取的坐标值存储起来或进行进一步的处理。

示例代码(伪代码):

// 假设我们有一个页面组件Page
Page page = ...;

// 设置点击事件监听器
page.setClickedListener([](const ClickEvent& event) {
    // 获取点击位置的坐标值(通常为组件坐标系)
    int x = event.getX();
    int y = event.getY();
    
    // 如果需要转换为屏幕坐标系,可以使用相应的API
    // 例如:ScreenPoint screenPoint = ConvertToScreenPoint(x, y);
    
    // 存储或处理坐标值
    // ...
});

注意:上述代码为伪代码,具体实现可能需要根据实际的鸿蒙系统API进行调整。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部