0

我有一个项目,其中有一个滚动列表。我希望我的用户能够“长按”列表中的项目,以便他们可以删除它。

我正在使用 Flash CS6 在 Air for iOS 中进行开发,所以我对 iOS 部署的适当 MultiTouch 手势知之甚少。

在我看来,我想像这样走的动画步骤..

  1. 当 Long Touch 开始 + 计时器开始时,Item 影片剪辑中以前不可见的按钮 btn_delete 将出现
  2. 中间步骤:btn_delete 将使用 TweenMax Rotate 旋转 90 度(我已经介绍过)
  3. 最后一步:当计时器结束时,会弹出一个对话框/确认框并询问用户是否确定是否要删除该项目。

所以这是我快速编写的一些通用代码,让您了解我目前的结构(我省略了相互链接的侦听器函数):

function exampleFunction {
    _item.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
}

//-- Long Press Listener Functions--//
function onTouchBegin(eBegin:TouchEvent) {
    trace("start");
}

function onTouchRotate(eEnd:TouchEvent) {
    trace("rotation of image");
}

function onTouchEnd(eEnd:TouchEvent) {
    trace("end");
}

如果有人有一段他们已经编写的代码大致符合我的标准,那么请发布它!

4

1 回答 1

1

我会用MouseEvent这个。

var timer:Timer = new Timer( 500 ); //ms
timer.addEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );

listItem.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler );

function mouseDownHandler( e:MouseEvent ):void {
    timer.start();
    stage.addEventListener( MouseEvent.MOUSE_UP, mouseUpHandler );
}

function mouseUpHandler( e:MouseEvent ):void {
    //just some clean up to reset the timer and remove the mouse up event listener from the stage 
    timer.reset();
    stage.removeEventListener( MouseEvent.MOUSE_UP, mouseUpHandler );
}

function timerCompleteHandler( e:TimerEvent ):void {
    timer.reset();
    stage.removeEventListener( MouseEvent.MOUSE_UP, mouseUpHandler );

    //do delete actions here
}

因此,在鼠标按下时,您启动计时器并监听鼠标向上事件(在舞台上而不是组件上。这很重要。如果您想知道原因,请在组件上尝试并进行实验)。在鼠标向上时,您重置计时器,因此下次您向下鼠标时,它从 0 开始(reset() 具有停止计时器的额外好处)。计时器完成后,除了删除代码之外,您还可以执行与鼠标向上相同的操作。

我在这里使用 MouseEvent 只是因为它在此实例中的行为与 TouchEvent(大部分情况下)相同,并且可以在桌面上使用(这意味着您可以在模拟器中进行测试,如果需要,可以将其添加到其他项目中)

更新:只是重读你的问题,并意识到我错过了轮换。为此,只需添加另一个带有单独完整处理程序的计时器,并且在该函数中,仅执行旋转并重置该计时器。

于 2013-04-19T18:52:25.103 回答