我创建了一个自定义擦洗条,这意味着擦洗手柄沿着特定轴是药物。我可以很好地拖动手柄,但是当我开始拖动并将鼠标从手柄上移开并释放时,手柄不会停止。当我停止拖动以使其停止时,我必须超过实际的句柄。
这不会是一个问题,但是手柄非常小,所以如果我能找到一种方法在鼠标开启或关闭时停止拖动手柄,那就太好了。
一个很好的例子是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();
}
答案 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();
}