2014-03-13 58 views
0

我創建了一個自定義的擦洗棒,意思是沿着特定軸線的擦洗手柄正在吸毒。我可以很好地拖動手柄,但是當我開始拖動並將鼠標從手柄上移開並釋放時,手柄不會停止。當我停止拖動以停止拖動時,我必須完成實際的處理。擦洗後不停止的視頻洗滌器

這不會是個問題,但是手柄非常小,所以如果我能想出停止拖動鼠標打開或關閉手柄的方法,那將會很不錯。

一個很好的例子是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

註冊MouseEvent.MOUSE_UPscrubberDown處理程序,併爲舞臺,讓用戶可以停止在任意位置拖動。

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(); 
} 
+0

嘿尼古拉斯,我試過你的建議,但我得到一個錯誤'ReferenceError:錯誤#1069:在flash.display.Stage中找不到屬性stopDrag,並且沒有默認值。 \t at player_fla :: MainTimeline/scrubberUp()' – Mike

+0

我會改變你的代碼,它應該工作 –

+0

就是這樣,簡單的事情讓我研究了大約兩個小時,哈哈。感謝您的幫助! – Mike