Пошаговая инструкция создания простой прокрутки

код в таймлайне, 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);