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)
  }
}

运行查看一下效果如下:

相关推荐
DreamLife☼3 小时前
Agent开发环境搭建完全指南
python·docker·typescript·node·工业知识点
HarmonyOS_SDK3 小时前
基于增强QUIC协议优化弱网下的直播观看体验
harmonyos
安好说AI3 小时前
Flutter 三方库 adaptive_image_picker 的鸿蒙化适配指南:零权限选图、纯 Dart 裁剪与目标大小压缩
flutter·harmonyos
昇腾知识体系5 小时前
msprobe/msdebug 全家桶:昇腾精度比对、溢出检测、msSanitizer 内存检测与 msOpProf 算子调优实战
人工智能·华为·知识图谱
2501_919749035 小时前
华为鸿蒙免费PDF工具—小羊免费PDF
华为·pdf·harmonyos·鸿蒙
贾伟康7 小时前
【口算王|10】HarmonyOS ArkTS 语音报题实战:协调朗读、作答和页面生命周期
生命周期·harmonyos·arkts·语音交互·texttospeech
贾伟康8 小时前
【口算王|08】HarmonyOS ArkTS 分类训练实战:让年级与运算分类参数保持一致
harmonyos·arkts·数据建模·路由参数·分类训练
小飞象—木兮8 小时前
经营复盘指南:核心概念、7 个核心指标、华为复盘管理标杆实践、案例·
华为
光锥智能8 小时前
华为新麒麟芯片、鸿蒙7问世,手机底层竞赛升级
华为·智能手机·harmonyos