HarmonyOS 鸿蒙Next 有什么接口能实现手势或者是其他事件在.onTouch之前触发
HarmonyOS 鸿蒙Next 有什么接口能实现手势或者是其他事件在.onTouch之前触发
现在onTouch触发的时候会在画布绘制路径,但是PinchGesture捏合手势做画布放大缩小的时候会先触发.onTouch事件,没办法做到放大缩小的时候不禁止绘制路径。
2 回复
在ontouch事件中,判断event.touches.length,有多个手指就return。 // xxx.ets
@Entry
@Component
struct PinchGestureExample {
@State scaleValue: number = 1
@State pinchValue: number = 1
@State pinchX: number = 0
@State pinchY: number = 0
@State text: string = ''
@State eventType: string = ''
aboutToDisappear(): void {
}
build() {
Column() {
Column() {
Text('PinchGesture scale:\n' + this.scaleValue)
Text('PinchGesture center:\n(' + this.pinchX + ',' + this.pinchY + ')')
}
.height(200)
.width(300)
.padding(20)
.border({ width: 3 })
.margin({ top: 100 })
.scale({ x: this.scaleValue, y: this.scaleValue, z: 1 })
// 两指捏合触发该手势事件
.gesture(
PinchGesture({ fingers: 2 })
.onActionStart((event: GestureEvent) => {
console.info('Pinch start')
})
.onActionUpdate((event: GestureEvent) => {
if (event) {
this.scaleValue = this.pinchValue * event.scale
this.pinchX = event.pinchCenterX
this.pinchY = event.pinchCenterY
}
})
.onActionEnd((event: GestureEvent) => {
this.pinchValue = this.scaleValue
console.info('Pinch end')
})
)
.onTouch((event?: TouchEvent) => {
if(event){
if (event.touches.length > 1) {
return
}
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%')
}
}
更多关于HarmonyOS 鸿蒙Next 有什么接口能实现手势或者是其他事件在.onTouch之前触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,通常事件的处理顺序是由系统捕获并分发,然后按照既定的逻辑进行处理。.onTouch
方法是在触摸事件发生时被调用的,用于处理触摸相关的逻辑。
要实现手势或其他事件在.onTouch
之前触发,通常这不是直接通过某个特定接口来实现的,而是需要开发者在事件分发和处理的机制上进行更深入的定制。HarmonyOS提供了事件分发和处理的机制,允许开发者在事件到达目标组件之前进行拦截和处理。
一种可能的方法是使用事件监听器或拦截器,在事件分发链路的早期阶段捕获并处理事件。然而,这需要开发者对事件分发机制有深入的理解,并且可能需要修改或扩展现有的事件处理逻辑。
如果开发者希望在触摸事件之前触发某些逻辑,建议深入研究HarmonyOS的事件分发和处理机制,并尝试在事件分发链路的早期阶段进行拦截和处理。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。