HarmonyOS(二十四)——Harmonyos通用事件之触摸事件

1.触摸事件。

触摸事件是HarmonyOS通用事件的一种事件之一,当手指在组件上按下、滑动、抬起时触发。

名称 是否冒泡 功能描述
onTouch(event: (event?: TouchEvent) => void) 是 手指触摸动作触发该回调,event返回值见下面TouchEvent介绍。

2. TouchEvent对象

名称 类型 描述
onTouch(event: (event?: TouchEvent) => void) 是 手指触摸动作触发该回调,event返回值见下面TouchEvent介绍。
type TouchType 触摸事件的类型。
touches Array<TouchObject> 全部手指信息。
changedTouches Array<TouchObject> 当前发生变化的手指信息。
stopPropagation () => void 阻塞事件冒泡。
timestamp8+ number 事件时间戳。触发事件时距离系统启动的时间间隔,单位纳秒。
target8+ EventTarget 触发事件的元素对象显示区域。
source8+ SourceType 事件输入设备。

3.TouchObject对象

名称 类型 描述
type TouchType 触摸事件的类型
id number 手指唯一标识符
sscreenX number 触摸点相对于应用窗口左上角的X坐标。
screenY number 触摸点相对于应用窗口左上角的Y坐标。
X number 触摸点相对于被触摸元素左上角的X坐标。
Y number 触摸点相对于被触摸元素左上角的Y坐标。

4. 完整实例

下面用一个简单的小列子查看一下触摸事件touch对应的TouchEvent的用法。

typescript 复制代码
// xxx.ets
@Entry
@Component
struct TouchExample {
  @State text: string = ''
  @State eventType: string = ''

  build() {
    Column() {
      Button('Touch').height(40).width(100)
        .onTouch((event: TouchEvent) => {
          if (event.type === TouchType.Down) {
            this.eventType = 'Down'
          }
          if (event.type === TouchType.Up) {
            this.eventType = 'Up'
          }
          if (event.type === TouchType.Move) {
            this.eventType = 'Move'
          }
          this.text = 'TouchType:' + this.eventType + '\nDistance between touch point and touch element:\nx: '
          + event.touches[0].x + '\n' + 'y: ' + event.touches[0].y + '\nComponent globalPos:('
          + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\nwidth:'
          + event.target.area.width + '\nheight:' + event.target.area.height
        })
      Button('Touch').height(50).width(200).margin(20)
        .onTouch((event: TouchEvent) => {
          if (event.type === TouchType.Down) {
            this.eventType = 'Down'
          }
          if (event.type === TouchType.Up) {
            this.eventType = 'Up'
          }
          if (event.type === TouchType.Move) {
            this.eventType = 'Move'
          }
          this.text = 'TouchType:' + this.eventType + '\nDistance between touch point and touch element:\nx: '
          + event.touches[0].x + '\n' + 'y: ' + event.touches[0].y + '\nComponent globalPos:('
          + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\nwidth:'
          + event.target.area.width + '\nheight:' + event.target.area.height
        })
      Text(this.text)
    }.width('100%').padding(30)
  }
}

运行查看一下效果如下:

相关推荐
浪遏33 分钟前
从命令到工作流:juejin-cli 如何让写作自动化更可靠
typescript
贾伟康6 小时前
HarmonyOS API 26 DevEco Code 需求到 ArkTS 骨架的提示词分层
harmonyos·arkts·ai coding·deveco code·工程提效
威哥爱编程7 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程7 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
浪遏11 小时前
07|网页上看着正常,导出的 PDF 为什么还会变样
typescript
浪遏11 小时前
03|自动保存真正难的部分,是保存期间又发生了修改
typescript
浪遏11 小时前
04|同一篇资料,怎样同时交给编辑器、搜索和 AI
typescript
浪遏11 小时前
09|让 Mermaid 和 HTML 成为可编辑内容块
typescript
贾伟康11 小时前
HarmonyOS API 26 HMAF Skill 可解释任务计划与失败回退
harmonyos·arkts·智能体·skill·hmaf
贾伟康11 小时前
HarmonyOS API 26 HMAF 2.0 意图解析的可解释动作图
harmonyos·arkts·智能体·a2a·hmaf