Иллюстрированный самоучитель по Flash-games


Создание кода


Весь сценарий прикреплен к клипу "actions", расположенному за пределами рабочего поля. Он начинается с обработчика событий onClipEvent (mouseDown), который реагирует на щелчок мыши по рабочему полю.
Этот код просто просматривает элементы картинки и определяет, находится ли один из них под курсором, а также является ли элемент полностью непрозрачным, то есть размещен ли на своем месте.
Если элемент найден, программе Flash сообщается, что теперь он подвижный и может перемещаться с помощью команды startDrag. Затем программа завершается.

Команда startDrag - основное действие, позволяющее пользователю перетаскивать клип. Оно не такое универсальное, как методы перетаскивания, рассмотренные ранее, но в простых случаях работает хорошо. Команда stopDrag останавливает перетаскивание.

onClipEvent(mouseDown) {

// Определяем положение курсора.
mx = _root._xmouse;

my = _root._ymouse;

// Просматриваем все элементы картинки,

for (x=0;x

for(y=0;y

piece = _root[x+"-"+y];

// Выясняем, находится ли элемент под курсором

// и не находится ли он уже на своем месте?

if (piece.hitTest(mx,my) and (piece._alpha < 100)){

// Пользователь щелкнул по элементу.

piece.startDrag();

// Выходим из циклов.
х = 6 ;

У = 4;

break;
}}
}}

Когда пользователь отпускает кнопку мыши, элемент фиксируется, Код проверяет расстояние от центра элемента до центра контура: если оно не превышает 10. пикселов, элемент перемешается точно в свое положение и становится полностью непрозрачным, так что пользователь видит: элемент находится на своем месте.

onClipEvent(mouseUp) {

// Прекращаем перемещение элемента.

stopDrag();

// Измеряем расстояние от центра элемента до центра контура.

dx = _root.outline._x - piece._x;

dy = _root.outline._x - piece._y;
dist = Math.sqrt(dx*dy+dy*dy);

// Если расстояние меньше 10 пикселов,
// элемент помещается на свое место,

if (dist < 10) {

piece._x = _root.outline._x;

piece. _y = _root.outline._y;

// Делаем элемент полностью непрозрачным,

piece._alpha = 100;

}
}




Начало  Назад  Вперед