/ Published in: ActionScript 3
Expand |
Embed | Plain Text
var handle:Sprite; var base:Sprite; var dragRec:Rectangle; var dir:String; var _value:Number; base = new Sprite(); base.graphics.beginFill(0xdddddd); base.graphics.drawRect(0, 0, 400, 40); base.graphics.endFill(); base.x=100; base.y=100; addChild(base); addSlider(base); function addSlider(target:Sprite){ var handleW:Number = 80; var handleH:Number = 40; var sbW:Number = 0; var sbH:Number = target.height - handleH; dir = "v"; if(target.width>target.height){ sbW = target.width - handleW; sbH= 0; dir = "h"; } handle = new Sprite(); handle.graphics.beginFill(0x0000ff); handle.graphics.drawRect(0, 0, handleW, handleH); handle.graphics.endFill(); handle.name = "handle"; handle.buttonMode = true; handle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); handle.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); dragRec = dragRec = new Rectangle(handle.x, handle.y, sbW, sbH); target.addChild(handle); } function mouseUp(event:MouseEvent):void { if (event.target != handle){ doStopDrag(handle); } stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp); } function mouseDownHandler(event:MouseEvent):void { var sprite:Sprite = Sprite(event.target); stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.startDrag(false, dragRec); } function mouseUpHandler(event:MouseEvent=null):void { var sprite:Sprite = Sprite(event.target); doStopDrag(sprite); } function doStopDrag(clip:Sprite):void { clip.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); clip.stopDrag(); } function mouseMoveHandler(event:MouseEvent=null):void { if(dir=="v"){ _value = (base.height - handle.height - (base.height - handle.height - handle.y)) * base.height/(base.height - handle.height); _value = _value/base.height; }else{ _value = (base.width - handle.width - (base.width - handle.width - handle.x)) * base.width/(base.width - handle.width); _value = _value/base.width; } trace(_value) //dispatchEvent(new Event(CustomEvents.SLIDER_UPDATE)); } function setValue($value):void { if (dir == "v") { handle.y = (base.height - handle.height) * $value; }else { handle.x = (base.width - handle.width) * $value; } }
You need to login to post a comment.
