====== Пошаговая инструкция создания простой прокрутки ======
код в таймлайне, as3
рекоммендуется ознакомиться с [[:советы:объекты и координаты]]
подготовка fla
* создать клип с картинкой.
* положить на сцену с [[:темы:имя экземпляра | именем]] content_mc
* создать слой с маской с именем mask_mc
* создать кнопку прокрутки с именем track_mc
перемещение кнопки
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);