Для перетаскивания мувиков по сцене флеш-ролика в ActionScript 2.0 имеется два специальных метода:
1.) startDrag() - задаёт параметры и начинает перетаскивание; имеет несколько необязательных, но очень полезных параметров:
- первый параметр отвечает за положение курсора мышки относительно перетаскиваемого объекта и может принимать булевы значения true или false. Работу данного параметра наглядно демонстрирует следующий пример.
В данном приложении имеется два мувиклипа, которые можно перетаскивать. Но левому мувиклипу в качестве первого параметра указано значение true. Поэтому при перетаскивании левого мувика курсор мышки всегда располагается над точкой регистрации мувиклипа (в данном примере нулевая точка координат мувиклипа помечена двумя пересекающимися линиями). А правому мувику в качестве первого параметра указано false, благодаря чему жесткой привязки курсора мышки к центру мувиклипа не происходит.
- четыре последующих параметра являются числами и определяют область перетаскивания - это прямоугольная область, в которой возможно перетаскивание данного объекта. Из этих 4-х параметров два первых указывают координаты верхнего левого угла области перетаскивания, а два последних хранят координаты нижнего правого угла прямоугольной области. Именно на основе данных о координатах верхнего левого и нижнего правого углов и строится прямоугольная область, внутри которой возможно перетаскивание объекта.
2.) stopDrag() - останавливает перетаскивание.
Примечания:
[!] на плавность перетаскивания влияет fps данного флеш-ролика. Если fps низкий, то перетаскивание будет происходить рывками, объект будет заметно отставать от курсора мышки;
[!] одновременно можно перетаскивать только один объект.
Чтобы проверить работу этих методов на практике, создаём мувик с именем "mc" и пишем приведённый ниже код на главной временной шкале флеш-ролика.
Код ActionScript 2.0:
mc.onPress = function() {
mc.startDrag(false, 100, 100, 450, 300);
};
mc.onRelease = function() {
mc.stopDrag();
};
В результате у нас получается следующее:
В данном примере границы области перетаскивания обозначены красной пунктирной линией. Сама же прямоугольная область перетаскивания построена на основе координат верхнего левого угла (100,100) и нижнего правого угла (450,300).
В ActionScript 3.0 перетаскивание осуществляется одноимёнными методами, но для определения области перетаскивания используется экземпляр класса Rectangle, который имеет 4 параметра:
- координаты области перетаскивания по оси x;
- координаты области перетаскивания по оси y;
- ширина области перетаскивания;
- высота области перетаскивания.
Код ActionScript 3.0:
addEventListener(MouseEvent.MOUSE_DOWN, mDown);
function mDown(event:MouseEvent):void
{
/*
От первого параметра зависит расположение объекта относительно курсора мышки.
Второй параметр определяет границы области, в которой осуществляется перетаскивание.
*/
mc.startDrag(true, new Rectangle(100,100,350,200));
}
addEventListener(MouseEvent.MOUSE_UP, mUp);
function mUp(event:MouseEvent):void
{
/*
останавливаем перетаскивание
*/
mc.stopDrag();
}