код в таймлайне, as3
рекоммендуется ознакомиться с объекты и координаты
подготовка fla
перемещение кнопки
import flash.events.MouseEvent; import flash.events.Event; function downHandler(e:MouseEvent):void { addEventListener(Event.ENTER_FRAME, moveTrack); } function upHandler(e:MouseEvent):void { removeEventListener(Event.ENTER_FRAME, moveTrack); } function moveTrack(e:Event):void { track_mc.y = mouseY; } track_mc.addEventListener(MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
«правильное» перемещение объекта
import flash.events.MouseEvent; import flash.events.Event; var offsetY:Number = 0; function downHandler(e:MouseEvent):void { offsetY = track_mc.mouseY; addEventListener(Event.ENTER_FRAME, moveTrack); } function upHandler(e:MouseEvent):void { removeEventListener(Event.ENTER_FRAME, moveTrack); } function moveTrack(e:Event):void { track_mc.y = mouseY-offsetY; } track_mc.addEventListener(MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
ограничение перемещения кнопки
import flash.events.MouseEvent; import flash.events.Event; var offsetY:Number = 0; var minY:Number = 10; var maxY:Number = stage.stageHeight - track_mc.height - 10; function downHandler(e:MouseEvent):void { offsetY = track_mc.mouseY; addEventListener(Event.ENTER_FRAME, moveTrack); } function upHandler(e:MouseEvent):void { removeEventListener(Event.ENTER_FRAME, moveTrack); } function moveTrack(e:Event):void { track_mc.y = Math.min(Math.max(mouseY-offsetY, minY), maxY); } track_mc.addEventListener(MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
привязка контента
import flash.events.MouseEvent; import flash.events.Event; var offsetY:Number = 0; var minY:Number = 10; var maxY:Number = stage.stageHeight - track_mc.height - 10; var contentDelta:Number = mask_mc.height - content_mc.height; function downHandler(e:MouseEvent):void { offsetY = track_mc.mouseY; addEventListener(Event.ENTER_FRAME, moveTrack); } function upHandler(e:MouseEvent):void { removeEventListener(Event.ENTER_FRAME, moveTrack); } function moveTrack(e:Event):void { track_mc.y = Math.min(Math.max(mouseY-offsetY, minY), maxY); var pc:Number = (track_mc.y - minY)/(maxY-minY); content_mc.y = pc * contentDelta; } track_mc.addEventListener(MouseEvent.MOUSE_DOWN, downHandler); stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);