gpt4 book ai didi

ios - iOS 上的 Flex 敲击响应不佳

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:55 27 4
gpt4 key购买 nike

我们的应用程序中有多个项目渲染器,我们注意到这些 UI 元素对点击的响应可能有很大差异。

例子:

    private function setupClickHandling():void
{
//this.addEventListener(TouchEvent.TOUCH_TAP, clickHandler);
this.addEventListener(MouseEvent.CLICK, clickHandler);
}

protected function clickHandler(e:Object):void
{
var event:ItemClickEvent =
new ItemClickEvent(ItemClickEvent.ITEM_CLICK, true);
event.item = data;
event.index = itemIndex;
dispatchEvent(event);
}

使用 MouseEvent.CLICK 时,有时点击不会记录为实际点击,即使控件会在“按下”状态下花费一些时间。这是最令人沮丧的,因为用户认为控件已被触发,但除了灰色背景闪烁之外什么也没有发生,因为没有触发点击事件。

使用 TouchEvent.TOUCH_TAP 时,点击变得过于响应,有时列表项会在拖动滚动列表时被触发。我认为只要中心点没有明显移动,无论持续时间多短,点击界面都会注册点击,并且一旦检测到足够的移动,点击将不会被注册。相反,似乎发生的是点击事件是在事件的向下部分而不是向上部分注册的。

那么,有没有什么方法可以提高 Click 的灵敏度,或者降低 Tap 的灵敏度?

或者理想情况下,始终将点击注册为实际点击?

最佳答案

您可以滚动自己的点击手势。这是我的做法..

public function BaseItemRenderer()
{
super();
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
this.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
this.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
this.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
}

protected var touching:Boolean;
protected var touchStartTime:int;
protected var touchStartX:Number;
protected var touchStartY:Number;

private function onTouchBegin(e:TouchEvent):void
{
trace("onTouchBegin");
touching = true;
touchStartTime = getTimer();
touchStartX = e.stageX;
touchStartY = e.stageY;
}

private function onTouchMove(e:TouchEvent):void
{
//
}

protected static const TAP_MIN_DURATION:int = 0;
protected static const TAP_MAX_DURATION:int = 1000;
protected static const TAP_MIN_DISTANCE:Number = 0;
protected static const TAP_MAX_DISTANCE:Number = 40;

private function onTouchEnd(e:TouchEvent):void
{

if(touching)
{
touching = false;
var duration:int = getTimer()-touchStartTime;
var distanceX:Number = e.stageX - touchStartX;
var distanceY:Number = e.stageY - touchStartY;
var distance:Number = Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2));
trace("onTouchEnd duration:" + duration + " distance:" + distance);

if(duration >= TAP_MIN_DURATION &&
duration <= TAP_MAX_DURATION &&
distance >= TAP_MIN_DISTANCE &&
distance <= TAP_MAX_DISTANCE)
{
onTap(e.target);
}
}

}

关于ios - iOS 上的 Flex 敲击响应不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com