Моментальная проверка правильности расположения перетаскивающихся объектов



Цель работы: познакомимся с одним из возможных вариантов моментальной проверки правильности перемещения объектов.

Теоретические сведения

Мы уже освоили технологию свободного перемещения объектов, научились их переворачивать, перемещать с исчезновением. Технология свободного перемещения объектов во Flash может быть усовершенствована, если использовать возможность моментальной проверки правильности расположения перетаскивающихся объектов. Это можно осуществить, если использовать проверку принадлежности клипа той или иной области.

Практическая часть

1. Открываем новый документ.

2. Называем слой именем «Фон» и устанавливаем цвет фона по желанию.

3. Устанавливаем размер рабочей области 800х600.

4. В 1-м кадре слоя «Фон» размещаем текст задания: Установи правильное соотношение. Перетащи надписи на соответствующие позиции.

5. Добавляем новый слой с именем «Картинки» и располагаем на нем изображения устройств (рис. 16.1).

Рис. 16.1. Слой «Картинки»

6. Добавляем новый слой с именем «Ответы», на котором в 1-м кадре создаем объекты для перемещения – названия устройств.

Код для свободного перемещения каждого объекта (клипа) нам уже знаком:

on (press) { //Кнопка мыши нажата

StartDrag (this); } //Начать перемещение

on (release) { //Кнопка мыши отпущена

StopDrag (); } //Закончить перемещение

7. Задаем каждому клипу имя инстанции k1, k2, k3, k4, k5, k6 соответственно (рис. 16.2).

k2
k3
k6
k5
k4
k1

Рис. 16.2. Слой «Картинки»

8. Добавляем новый слой с именем «База» и располагаем на нем прямоугольные поля чуть большего размера, чем перемещаемые клипы, устанавливая их на задний план (щелкаем правой кнопкой мыши и в контекстном меню выбираем пункт Расположить(Arrange)→На задний план(SendtoBack)→Ок).

9. Каждое прямоугольное поле (базу) преобразовываем в символ – тип клип и присваиваем соответствующее имя инстанции: base1, base2, base3, base4, base5, base6 (рис. 16.3).

base1
base2
base3
base4
base5
base6

Рис. 16.3. Слой «База»

Обратите внимание на то, что на клип base1 должен будет встать клип k1 и т.п.

10. Добавляем новый слой с именем «Код» и для 1 кадра прописываем следующий код:

stop();

//Функция

function dropToBase(clip:MovieClip, initX, initY, base:MovieClip) {

    clip._x = initX;

    clip._y = initY;

    clip.onPress = function() { // Принажатиинаклип...      

              this.startDrag();// Включаемперетаскивание

    };

    clip.onRelease = function() {//Приотпусканиикнопкимыши...

              this.stopDrag();// Прекращаем перетаскивание

              if (eval(this._droptarget) == base) {//Если клип "сброшен" в требуемую область (клип base),он центрируется по этой области //

                  this._x = base._x;

                       this._y = base._y;

              }

              else {// Иначе (если клип "сброшен" мимо цели) возвращаем его в исходное положение

                       this._x = initX;

                       this._y = initY;

              }

    };

}

//Основная программа

varclipNum:Number = 6; //Количество клипов

for (i = 1; i <= clipNum; i++) {

dropToBase(this["k" + i], this["k" + i]._x, this["k" + i]._y, this["base" + i]);

}

11. Для того чтобы ответ размещался поверх базы меняем местами слои «Ответы» и «База» (рис. 16.4).

Рис. 16.4. Смена места слоев «Ответы» и «База»

12. Тестируем проект.

13. Самостоятельно добавляем код, разворачивающий клип на весь экран, и кнопку выхода.

14. Публикуем в формате swf.

Лабораторная работа № 23


Дата добавления: 2018-04-15; просмотров: 295; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!