Термином ''drag'n'drop" ("тащи и бросай") обозначают целый набор операций, связанных с перетаскиванием каких-либо объектов операционной системы (файлов, папок, ярлыков), системных или прикладных программ. Так, во Flash вы используете операции перетаскивания для изменения местоположения графических фрагментов и указателя кадра. Как правило, в различных программах (в том числе, в самой операционной системе) операции "drag'n'drop" выполняют сходные функции.
Вы можете сделать один из встроенных клипов вашего фильма или приложения Flash перетаскиваемым. Это выполняется с помощью действия
startDrag.
startDrag(<путь клипа>, [<3а центр>, <Х1>;, , , ]);
В качестве единственного обязательного параметра передается путь к клипу, который вы хотите сделать перетаскиваемым.
Действие startDrag может принимать еще пять параметров. Второй параметр имеет логический тип и позволяет задать точку, к которой будет автоматически "приклеиваться" курсор мыши: точку, по которой пользователь щелкнул мышью (значение false) или центр клипа (значение true). Параметры XI и YI задают горизонтальную и вертикальную координаты левого верхнего угла воображаемого прямоугольника, внутри которого можно будет перетаскивать этот клип, и за пределы которого он не сможет выйти. А за координаты правого нижнего угла "отвечают
" параметры Х2 и Y2. Эти координаты задаются относительно внешнего клипа.
startDrag(_root.car);
Можно также использовать метод startDrag объекта movieclip:
<Путь клипа>.startDrag([<3а центр>, [<Х1>, , , ]]);
_root.car.startDrag(true);
После вызова этого действия или метода клип станет перетаскиваемым. При этом пользователь сможет
"ухватить"; его мышью и перетащить на новое место.
Вы также можете задать границы области, в которой можно будет "таскать" клип:
_root.car.startDragftrue, 100, 100, 500, 500);
Чтобы отменить возможность перетаскивания клипа, либо вызовите действие или метод startorag для другого клипа (только один клип в данный момент времени может быть перетаскиваемым), либо вызовите действие или метод stopDrag. Это действие (метод) не принимает параметров.
stopDrag();
_root.car.stopDrag ();
Для запуска процесса перетаскивания клипа и обработки его "отпускания" вы можете использовать обработчики событий press и release. А поскольку это не события встроенного клипа, а события кнопки, вам нужно будет предварительно преобразовать ваш клип в кнопку.
on (press) {
this.startDrag(true);
}
on(release) {
this._x = _root._xmouse;
this._y = __root._ymouse;
this.stopDrag();
}
Это простейшие обработчики перетаскивания клипа. Первый просто запускает операцию перетаскивания клипа. Второй же завершает эту операцию и одновременно помещает клип на то место, куда он был "брошен" пользователем. Конечно, вы можете создать и более сложные обработчики.
Объект movieciip предоставляет доступное только для чтения свойство _droptarget. Это свойство возвращает "цель" операции
"drag'n'drop", т. е. клип, в который был "брошен" текущий клип. Вы можете проверить значение, возвращаемое этим свойством, и в зависимости от этого завершить или не завершить операцию перетаскивания.
Здесь имеет место небольшое затруднение. Дело в том, что свойство _droptarget возвращает результат в особом формате, применяемом в старых версиях Flash. Это так называемая "запись со слэшем", когда для разделения имени экземпляра объекта и свойства или метода применяется косая черта (/), а не точка. Для того чтобы преобразовать
"запись со слэшем" в "запись с Точкой", нужно использовать функцию eval.
on(release) {
if (eval(this._droptarget) != _root.forbiddenArea) {
this._x = _root._xmouse;
this, у = _root._ymouse;
this . stopDrag ( ) ;
Вышеуказанный обработчик запрещает пользователю "бросать
" перетаскиваемый элемент в клип под названием forbiddenArea. Вы также можете, наоборот, разрешить "бросать" перетаскиваемый элемент только в одно определенное место