视频洗涤器在擦洗后不会停止

时间:2014-03-13 19:42:36

标签: actionscript-3 flash actionscript

我创建了一个自定义擦洗条,这意味着擦洗手柄沿着特定轴是药物。我可以很好地拖动手柄,但是当我开始拖动并将鼠标从手柄上移开并释放时,手柄不会停止。当我停止拖动以使其停止时,我必须超过实际的句柄。

这不会是一个问题,但是手柄非常小,所以如果我能找到一种方法在鼠标开启或关闭时停止拖动手柄,那就太好了。

一个很好的例子是Youtube。您可以开始拖动手柄,同时移动手柄可以将鼠标移开并释放。即使您没有直接释放手柄,手柄也会停止。

bottom_bar.scrubber.handle.addEventListener(MouseEvent.MOUSE_DOWN, scrubberDown);
bottom_bar.scrubber.handle.addEventListener(MouseEvent.MOUSE_UP, scrubberUp);

function scrubberDown(e:Event):void
{   
    flvPlayback.pause();
    var object = e.target;
    var bounds:Rectangle = new Rectangle();
        bounds.x = e.currentTarget.width - bottom_bar.scrubber.handle.width;
        bounds.y = e.currentTarget.y;
        bounds.width = bottom_bar.scrubber.width - (bottom_bar.scrubber.handle.width);
        bounds.height = bottom_bar.scrubber.height - bottom_bar.scrubber.handle.height; 
    object.startDrag(false, bounds);    
}

function scrubberUp(e:Event):void
{
    var _math:Number =((bottom_bar.scrubber.handle.x) / (960) * flvPlayback.totalTime);
    var object = e.target;
    object.stopDrag();
    flvPlayback.seek(_math);
    flvPlayback.play();
}

1 个答案:

答案 0 :(得分:1)

MouseEvent.MOUSE_UP处理程序中注册scrubberDown,并在舞台上注册,以便用户可以停止在任何位置拖动。

bottom_bar.scrubber.handle.addEventListener(MouseEvent.MOUSE_DOWN, scrubberDown);
//bottom_bar.scrubber.handle.addEventListener(MouseEvent.MOUSE_UP, scrubberUp);

function scrubberDown(e:Event):void {
    stage.addEventListener(MouseEvent.MOUSE_UP, scrubberUp);

    //Your current code
}

function scrubberUp(e:Event):void {
    stage.removeEventListener(MouseEvent.MOUSE_UP, scrubberUp);

    var _math:Number =((bottom_bar.scrubber.handle.x) / (960) * flvPlayback.totalTime);
    bottom_bar.scrubber.handle.stopDrag();
    flvPlayback.seek(_math);
    flvPlayback.play();
}