2011-01-21 5 views
0

私の目標は、as3の のシンプルライダーです。これはほぼ動作しますが、唯一の問題は です。クリックすると、スライダーをドラッグしてトラックから外に出ても、スライダーは引き続きドラッグされています。as3シンプルスライダー

私はそこだろうあなたは、マウスが離れすぎている場合は移動するスライダーを防ぎたい厄介な効果

package { 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.geom.Rectangle; public class SliderH extends MovieClip { 
    public function SliderH() { 
     trace("creation"); 
     addEventListener(MouseEvent.MOUSE_DOWN, mousedown); 
     addEventListener(MouseEvent.MOUSE_UP, mouseup); 
     this.buttonMode = true; 
    } 
    private function mousedown(e:MouseEvent):void { 
     trace("begin"); 
     var rect:Rectangle = new Rectangle(-this.parent.width/2,0,this.parent.width,0); 
     startDrag(false , rect); 

    } 
    private function mouseup(e:MouseEvent):void { 
     stopDrag(); 
     trace(this.x); 
    }  
} 

}

答えて

0

ことを防止するための簡単なトリックは、ある

推測マウスが動いたときのイベントリスナーを追加してください。スライダーからの距離が早すぎるとドラッグが早く停止する場合は、スライダーがどのように動作するかはわかりませんが、これが役立ちます。

package { 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.geom.Rectangle; public class SliderH extends MovieClip { 
    public function SliderH() { 
     trace("creation"); 
     addEventListener(MouseEvent.MOUSE_DOWN, mousedown); 
     addEventListener(MouseEvent.MOUSE_UP, mouseup); 
     addEventListener(MouseEvent.MOUSE_MOVE,mousemove); 
     this.buttonMode = true; 
    } 
    private function mousedown(e:MouseEvent):void { 
     trace("begin"); 
     var rect:Rectangle = new Rectangle(-this.parent.width/2,0,this.parent.width,0); 
     startDrag(false , rect); 

    } 
    private function mouseup(e:MouseEvent):void { 
     stopDrag(); 
     trace(this.x); 
    } 
    private function mousemove(e:MouseEvent):void{ 
     if (Math.abs(this.x)>this.parent.width/2){ 
      stopDrag(); 
     } 
    }  
} 
+0

を追加する必要があります。それでも同じ問題。 – yarek

2

私はものをやって、道に沿って学習のためのすべてのだが、キース・ピーターズは、セットアップに非常に簡単です偉大な簡単なライブラリを持っています。

http://www.bit-101.com/blog/?p=2979

を(簡単なコントロールを作成しようとしている場合)、それ以外にも、あなたはこの問題が解決しないROLL_OUTイベントflash.events.MouseEvent.ROLL_OUT

addEventListener(MouseEvent.ROLL_OUT, mouseup); 
+0

+1 MinimalCompsは素晴らしいです! –

+0

これを実行してスライダーを動かすと、そのスライドが停止します! – yarek

+1

オンダウンに表示されるスライダの周囲に大きな非表示領域を追加する – Daniel