UE4中对华为机型OnTouchMoved的处理

UE4中对华为机型OnTouchMoved的处理

1.简述

试想这样一个移动端的触摸场景:不要拖动该控件,仅松开手指/鼠标后处理,可不可行?
其实很简单,按下时记录初始状态,移动时设置一个标记位,如果触发了移动,那么松开时根据这个标志位的情况来执行后续逻辑即可。
类似这样:

--处理按下事件
function YourPanel:MouseButtonDown(InGeometry, InGestureEvent)
	self.m_NotMove = true
end

--处理移动事件
function YourPanel:MouseMove(InGeometry, InGestureEvent)
	self.m_NotMove = false
end

--处理抬起事件
function YourPanel:MouseButtonUp(InGeometry, InGestureEvent)
	if self.m_NotMove then
		--do something ,如果触发了move那么此处跳过
	end
end

我们之前实现过基础的功能:可以参考以下文章
UE4中触摸屏的拖拽缩放功能——lua实现

到这里为止一切正常,不过此处测试华为机型时,有意思的来了,手指按下时,经常会走到MouseMove里去,导致后续逻辑无法正常运行,猜测是华为机型采样灵敏度高或底层开启了UseHighPrecisionMouseMovement高精度鼠标移动引起的

2.处理方法

找到了原因,可以提供两种思路:一类是针对机型修改优化;二是在应用层对偏移的位置做判断,比如移动距离大于一个单位时才判定为移动

--处理移动事件
function YourPanel:MouseMove(InGeometry, InGestureEvent)
    local changepos = (thisPos - self.m_Offset)
    if math.abs(changepos.X) > 1 or math.abs(changepos.Y) > 1 then
        self.m_NotMove = false
    end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值