2011-01-21 6 views
0

내 목표는 as3에서 의 simla 슬라이더입니다.하지만 이것은 유일한 문제입니다. 클릭하면 슬라이더를 드래그하여 트랙에서 나가고 슬라이더는 여전히 드래그됩니다.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

키쓰 피터스 (Keith Peters)는 설치하기 쉽고 간단한 라이브러리를 가지고 있습니다.

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

슬라이더 주변에 더 큰 보이지 않는 영역을 추가하여 ondown에 표시합니다. – Daniel