WWW.DOCX.LIB-I.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Интернет материалы
 

«ЛекцииУправление проигрыванием. Кнопки Команды управления Чаще всего используются следующие команды управления: stop(); — остановить проигрывание; play(); — продолжить проигрывание с ...»

ЛекцииУправление проигрыванием. Кнопки

Команды управления

Чаще всего используются следующие команды управления:

stop(); — остановить проигрывание;

play(); — продолжить проигрывание с текущего места;

gotoAndStop(...); — перейти на заданный кадр и остановиться, в скобках указывают номер кадра или его метку (имя);

gotoAndPlay(...); — перейти на заданный кадр и продолжить проигрывание.

С помощью этих команд и кнопок мы построим ролик, показанный ниже.

Кнопки в нижней части поля имеют следующий смысл

перейти в начальное положение

начать (продолжить) движение

остановить движение

  Откройте файл ship.fla из папки PRACTICE\7 и просмотрите ролик.

  Перейдите в кадр 15 слоя Судно и нажмите клавишу F9, чтобы вывести на экран панель Actions. Введите код:

stop();

Просмотрите результат.

Для того, чтобы продолжить проигрывание фильма, мы добавим на сцену кнопку — символ специального типа.

Кнопки

При создании символа можно выбрать тип Button (кнопка). Так называется клип, имеющий 4 кадра:

Up — обычное состояние кнопки;

Over — вид кнопки, когда на нее наведен курсор мыши;

Down — нажатая кнопка;

Hit — область реагирования.

В каждом из них могут быть любые рисунки. Более того, можно создавать многослойные изображения и добавлять звук для каждого из состояний.

  Создайте новый символ (клавиши Ctrl+F8) типа Button (кнопка) и назовите его Кнопка_Старт. Нарисуйте примерно вот такую кнопку: Вставьте новый ключевой кадр в кадре Over и измените цвет стрелки на светло-зеленый. Затем вставьте ключевой кадр в кадре Down и измените цвет стрелки на красный.

Мы не задали никакого изображения в кадре Hit, это значит, что областью реагирования является вся непрозрачная область последнего кадра Down.

Теперь добавим звук, который будет сигнализировать о нажатии кнопки.

  Добавьте новый слой Звук и вставьте новый ключевой кадр Down. Перетащите на поле звук click.wav из библиотеки.

На панели Properties можно увидеть свойства этого звука:

Характеристики звука видны в нижней строчке: частота дискретизации 22 кГц, монофонический (левый и правый каналы звучат одинаково), 8-битное кодирование, время звучания 0,1 сек, размер файла 2,7 Кб.

Список Effect (эффект) позволяет выбрать один из стандартных эффектов (затухание, переход с левого канала на правый и т.п.). Значение None означает, что никакой эффект не применяется. Кнопка Edit служит для ручной настройки эффектов.

Параметр Sync для кнопок должен принимать значение Event (событие). Правее Repeat 1 означает повторение 1 раз. Кроме Repeat возможен еще вариант Loop (зацикливание, бесконечное повторение).

  Вернитесь к сцене. Создайте новый слой Кнопки, выделите кадр 1, перетащите кнопку из библиотеки в нижнюю часть поля и отрегулируйте ее размер.

Реакции на события

Чтобы кнопка «заработала», нужно определить ее реакцию на нажатие. Если выделить кнопку и нажать клавишу F9, на экране появляется панель Actions (действия), где можно написать программный код, связанный с кнопкой. Вот пример такого кода:

on ( release ) {

play();

}

Слово on начинает обработчик события, release (освобождение) в скобках указывает само событие — отпускание мыши над кнопкой. Далее внутри фигурных скобок записывают команды, которые нужно выполнить: в данном случае — продолжить проигрывание фильма.





Язык ActionScript использует правила записи команд, очень похожие на язык Си. Каждая команда заканчивается точкой с запятой.

Нажав на кнопку (или клавиши Ctrl+T), можно проверить правильность записи кода (соответствие правилам языка ActionScript). Если вы увидели сообщение "The script contains no errors.", ошибок нет. Сообщения об ошибках выводятся в специальном окне Compiler Errors (оно появляется автоматически или может быть вызвано нажатием клавиш Alt+F2).

Кнопка позволяет закрепить активное окно с кодом. Дело в том, что код может быть разбросан по нескольким местам (кадрам, кнопкам, клипам). В активном окне мы видим тот блок, который выделен в левой части панели Actions. Если прикрепить какой-то блок, он будет всегда показываться как вкладка в основном окне:

На рисунке активное окно — это код, связанный с кнопкой Стоп, а код кнопки Стоп был прикреплен и показывается в виде вкладки.

  Выделите кнопку и добавьте в окне Actions код

on (release) { play(); }

Щелкните по кнопке, чтобы проверить правильность набранного кода, а затем — по кнопке для автоматического выравнивания.

В левой части панели Actions находится справочная информация (Toolbox). Сверху — списки функций и операторов языка (их можно вставлять в код щелчком мыши), ниже — список всех объектов, с которыми связан код ActionScript. Сейчас видно, что какой-то код есть в кадре 15 слоя Судно (Судно: Frame 15) и у кнопки (элементы блока Scene 1). В данный момент мы редактируем код кнопки (Current Selection). Это окно удобно использовать для быстрого перехода от одного блока кода к другому.

С помощью кнопки можно убрать панели Toolbox, оставив только редактор кода.

  Выделите кадр 1 и добавьте к нему код

stop();

Закройте панель Actions и проверьте работу фильма.

Теперь добавим еще 2 кнопки: для остановки фильма и для перехода в начало. Поскольку на них должен быть другой рисунок, в библиотеке нужно создать еще два символа-кнопки. Например, можно продублировать существующую кнопку и изменить рисунок, выбрав команду Duplicate из контекстного меню, которое появляется при нажатии правой кнопки мыши на названии символа в библиотеке.

  Создайте кнопку с именем Кнопка_Стоп для остановки проигрывания. Для этого продублируйте кнопку в библиотеке, дайте ей новое имя и исправьте рисунки во всех кадрах (Up, Over, Down). Добавьте новую кнопку на слой Кнопки и настройте так, чтобы она останавливала фильм.

  Добавьте еще одну кнопку, которая возвращает фильм в начало (к кадру 1) с помощью кода

on (release) { gotoAndPlay(1); }

Проверьте ролик.

  Измените команду, связанную с последней кнопкой, на

gotoAndStop(1);

и посмотрите, что изменилось.

Когда в библиотеке очень много элементов, список получается очень длинный и в нем сложно разобраться. Чтобы облегчить жизнь, сходные элементы объединяют в папки. Папку в библиотеке можно открывать и закрывать двойным щелчком мыши.

  Выделите все кнопки в библиотеке (щелкая на них при нажатой клавише Ctrl) и выберите пункт Move to New Folder (переместить в новую папку) из контекстного меню. Дайте папке имя Кнопки.

Теперь надо сделать, чтобы кнопки на сцене были одинакового размера, и выровнять их. Для этого используется панель Align (выравнивание, клавиши Ctrl+K). Проверьте, чтобы режим To Stage был отключен (он используется для выравнивания относительно всей сцены).

  Выделите все кнопки и включите панель Align. Сначала сделайте одинаковой высоту кнопок ( в группе Match Size). Затем выровняйте центры по вертикали ( в группе Align) и распределите равномерно по горизонтали ( в группе Distribute).

Для кнопок, так же, как и для клипов, можно применять фильтры (панель Filters).

  Для придания кнопкам более красивого вида примените фильтр Bevel и настройте его параметры на ваш вкус.

Метки кадров

В ходе работы кадры часто перемещаются, поэтому переходы по номерам кадров нежелательны. Вместо этого кадру (только ключевому!) можно присвоить имя (метку) и выполнять переход по метке, а не по номеру. Для меток обычно создается отдельный слой.

  Создайте новый слой Метки и выделите кадр 1. На панели Properties введите метку кадра, как показано на рисунке.

Замените команду, связанную с последней кнопкой, на

gotoAndStop ( "start" );

и проверьте ролик.

Обратите внимание, что на временной шкале в кадре 1 слоя Метки появилась метка start:

к началу 3. Адреса: дети, родители и корень

В следующем проекте при нажатии кнопки стартует машина:

  Откройте файл car.fla из папки PRACTICE\7. Создайте два новых слоя: Кнопка и Программа. На слой Кнопка поместите кнопку из библиотеки и просмотрите ролик.

Обратите внимание, что Кнопка — это символ типа Button, а Машина, так же как и два ее колеса — символы типа Movie Clip (клипы).

  В первый кадр слоя Программа добавьте код

stop();

Если теперь просмотреть ролик, выяснится, что машина стоит на месте, но ее колеса вращаются. Это происходит потому, что команда stop() остановила только проигрывание главной временной шкалы, а внутренние клипы (колеса) продолжают работать.

Чтобы ответить на вопрос «Как остановить колеса?» нужно разобраться с адресами внутри флэш-ролика. Но прежде всего, дадим имена объектам на сцене, к которым мы будем обращаться: машине и двум колесам внутри нее.

  Выделите машину и на панели Properties введите имя этого элемента car. Откройте клип Машина для редактирования и таким же образом дайте колесам имена wheel1 и wheel2.

Итак, в этом фильме 4 монтажных стола со своими временными шкалами:

главный (корневой) монтажный стол, он называется _root;

монтажный стол клипа Машина;

два монтажных стола для каждого колеса.

Связи этих монтажных столов показаны на схеме:

Клип car находится внутри главного монтажного стола _root, а клипы wheel1 и wheel2 — внутри клипа car.

Главный монтажный стол _root является «родителем» (parent) для клипа car.

Клип car является «сыном» (child) для _root и родителем для клипов wheel1 и wheel2.

Клипы wheel1 и wheel2 — сыновья для car, у них самих нет потомков.

Абсолютные адреса

Каждый объект имеет свой абсолютный адрес, по которому его можно найти из любого места. Например, квартира Васи Пупкина может иметь такой абсолютный адрес:

Россия, Санкт-Петербург, 3-я ул. Строителей, д. 25, кв. 12

Здесь на первом месте стоит страна, затем — город и т.д.

Для объектов Flash-фильма абсолютный адрес начинается с _root, так что абсолютные адреса всех клипов, показанных на схеме, выглядят так:

_root_root.car_root.car.wheel1_root.car.wheel2

Как видим, для обращения к сыновьям используется точка.

Абсолютные адреса не зависят от того, внутри какого монтажного стола они используются.

Чтобы остановить проигрывание для какого-то монтажного стола, надо перед командой stop() поставить его адрес и точку:

_root.stop();

_root.car.stop();

_root.car.wheel1.stop();

_root.car.wheel2.stop();

Если мы применяем абсолютные адреса, нужно помнить, что они станут неверными, если машина будет находиться уже не на главном монтажном столе, а станет частью другого клипа (Вася Пупкин переехал).

Относительные адреса

Относительные адреса зависят от того, где находится объект, использующий этот адрес. Вася Пупкин может сказать, что Сеня Васечкин живет через 2 дома от него.

Для обращения к родителю используют слово _parent. Например, чтобы из клипа wheel1 остановить проигрывание для монтажного стола клипа car, надо применить команду

_parent.stop();

Эта команда сработает из из клипа wheel2, поскольку его родителем также является car.

Если два раза использоать _parent, мы обращаемся к «деду». Например, команда

_parent._parent.stop();

останавливает проигрывание на главном монтажном столе из клипа wheel1 или wheel2.

К сыновьям можно обращаться просто по имени. Например, команда

car.stop();

допустима внутри _root. Кроме того, здесь можно было использовать и слово this (текущий монтажный стол):

this.car.stop();

Для остановки wheel1 из _root можно применить одну из команд

car.wheel1.stop();

this.car.wheel1.stop();

Наконец, самый сложный случай. Обратиться к «брату» можно только через родителя. Чтобы остановить второе колесо из wheel1, надо написать

_parent.wheel2.stop();

  Добавьте в код кадр 1 слоя Программа команды, останавливающие вращение колес, а в код обработчика нажатия кнопки — команды для запуска вращения колес. Сохраните файл и просмотрите результат.

к началу 4. Звук: новые подробности

  Создайте новый слой Звук и перетащите в кадр 1 звук fastcar.wav из библиотеки. Просмотрите результат.

Получилось, что машина стоит на месте, а звук уже слышен. Чтобы этого не случилось можно начать проигрывать звук со второго кадра.

  Перетащите кадр 1 слоя Звук в кадр 2 и просмотрите результат.

Теперь звук слышен даже тогда, когда ролик начал проигрываться с начала и машина появилась на стартовой позиции. Чтобы остановить звук, надо вставить в слое Звук последний ключевой кадр и выбрать в параметрах звука Sync=Stop (остановить звук).

  Вставьте ключевой кадр в последний кадр слоя Звук. На панели Properties в списке Sound выберите fastcar.wav и установите для параметра Sync значение Stop.

Параметр Sync имеет еще и другие возможные значения:

Event — звук начинается, когда анимация доходит до этого кадра; если звук уже играет, при повторном вхождении в кадр запускается вторая копия и смешивается с «хвостом» первой;

Start — то же самое, что и Event, но вторая копия не запускается, если одна уже играет;

Stream — звук «режется» на кусочки и каждый из них «привязывается» к кадру (это бывает необходимо, когда требуется перейти в середину анимации и проигрывать звук с нужного места, а не с начала).

Теперь звук резко обрывается, когда машина уходит из кадра. В жизни такого не бывает — затухание должно быть постепенным. Чтобы добиться этого, нужно вручную настроить громкость каналов. Если щелкнуть по кнопке Edit на панели Properties, мы увидим окно настройки Edit Envelope (изменить огибающую):

Верхняя диаграмма показывает звук в левом канале, нижняя — в правом. Линии с белыми квадратиками регулируют громкость. В самом начале стоит только один квадратик в начале линии, щелчками мыши можно установить еще 7 узловых точек и, перемещая их, изменить громкость (сверху — наибольшая, снизу — наименьшая).

Кнопки и позволяют изменять масштаб временной оси, на которой откладываются номера кадров (если нажата кнопка ) или время в секундах (кнопка ).

Кнопки и служат для проигрывания звука (с учетом примененного эффекта) и его остановки.

  Откройте окно Edit Envelope, включите режим (номера кадров) и установите удобный масштаб временной оси. Добавив два узла к огибающим, измените их так, как показано на рисунке сверху (звук полностью затухает от 75-го до 100-го кадра). Сохраните фильм, просмотрите окончательный результат и закройте файл.

к началу 5. Свойства и события клипа

Свойства объектов

В этом разделе мы более подробно познакомимся с клипами и узнаем, как обрабатывать информацию от клавиатуры и мыши. В результате будет построен ролик, показанный ниже.

Здесь ракету можно перетаскивать мышкой и перемещать клавишами-стрелками на клавиатуре. Кнопки со стрелками на поле изменяют масштаб и угол поворота ракеты (попробуйте!).

Если водить мышью над ракетой, она постепенно становится прозрачной. Чтобы опять сделать ее полностью непрозрачной, надо щелкнуть по центральной кнопке с кружком.

В правой части поля выводятся текущие свойства клипа Ракета:

_x, _y — координаты точки регистрации (отсчитываются от левого верхнего угла экрана);

_width, _height — ширина и высота клипа в пикселях;

_xscale, _yscale — масштабы по осям X и Y (равны 100 в исходном состоянии);

_rotation — угол поворота в градусах вокруг точки регистрации (равен 0 для клипа в библиотеке);

_alpha — степень непрозрачности (от 0 до 100).

Изменение свойств

  Откройте файл space.fla из папки PRACTICE\7. Переместите точку регистрации клипа Ракета на ось симметрии ракеты (для этого надо открыть клип для редактирования и переместить изображение так, чтобы крестик оказался в нужном месте).

  Добавьте слой Кнопки и разместите на нем 1 кнопку типа Кнопка0 и 4 кнопки типа Кнопка из библиотеки. С помощью панели Transform (меню Windows—Transform или клавиши Ctrl+T) разверните три кнопки со стрелками на 90, 180 и 270 градусов. Расположите кнопки ровно, так как на образце в начале раздела.

Центральная кнопка с кружком будет восстанавливать полную непрозрачность ракеты, кнопки «влево» и «вправо» вращают ее (изменяют свойство _rotation), а кнопки «вверх» и «вниз» — изменяют размеры (свойства _xscale и _yscale).

В языке ActionScript (так же, как в Си и Java) для операций увеличения или уменьшения значений переменных на некоторую величину часто используется сокращенная запись:

a = a - 5;

b = b + 10;

выполняется точно так же, как

a -= 5;

b += 10;

  Добавьте код для кнопок. Центральная кнопка:

on (release) {

rocket._alpha = 100;

}

Стрелка «влево»:

on (release) { rocket._rotation -= 10;

}

Стрелка «вправо» — то же самое, но со знаком «плюс». Стрелка «вниз»

on (release) {

rocket._xscale += 5;

rocket._yscale += 5;

}

Стрелка «вверх» — то же самое, но со знаком «минус». Просмотрите результат и сохраните файл.

  Добавьте текст _x: и справа от него — еще одно текстовое поле для вывода текущей координаты _x. Для него в панели Properties установите тип Dynamic Text, имя x и ширину W=50.

События клипа

Клипы (символы типа Movie Clip) могут реагировать на те же события, что и кнопки, с помощью обработчиков on (...). Кроме того, есть еще несколько особых событий, которых у кнопок нет. Наиболее важные из них:

load — клип полностью загружен;

enterFrame — произошел переход к следующему кадру клипа;

mouseDown — нажата кнопка мыши;

mouseMove — мышь переместилась;

mouseUp — кнопка мыши отпущена;

keyDown — нажата клавиша на клавиатуре;

keyUp — клавиша отпущена.

Для обработки этих событий используются обработчики onClipEvent (...), которые можно добавить на панели Actions, предварительно выделив клип.

При частоте кадров 12, событие enterFrame возникает 12 раз в секунду, даже если клип содержит единственный кадр. Мы используем это событие для того, чтобы постоянно обновлять x-координату ракеты на экране.

Динамическое текстовое поле с именем x имеет свойство text, которое можно изменять из программы (это и есть надпись на экране). Для обращения к свойству объекта используется точка, то есть адрес текста принимает вид x.text. Таким образом, запись текущей x-координаты клипа rocket в текстовое поле x должна выглядеть так:

x.text = rocket._x;

  Выделите ракету на сцене и откройте панель Actions (клавиша F9). Введите код обработчика события enterFrame:

onClipEvent (enterFrame) { x.text = rocket._x;

}

Просмотрите результат.

Вы увидели, что x-координата на экране по-прежнему равна нулю, хотя клип находится не на левой границе экрана, и значит его действительная x-координата больше нуля.

Чтобы обнаружить ошибку, мы применим трассировку — вывод (в дополнительное окно) отладочных сообщений, которые позволят понять, что в самом деле происходит внутри программы.

  Добавьте в обработчик строчку

trace ( x );

При запуске появится окно Output (включается также через меню Window—Output или клавишей F2), в котором появляются строчки undefined.

Происходит следующее: мы попросили программу сказать, что же такое x в этой точке, и в ответ получили, что x — это непонятно что (undefined, не определено). Значит, текстовое поле x не найдено — неверно задан его адрес. Сообщение появляется 12 раз в секунду, каждый раз, когда происходит событие enterFrame. Заметим, что точно такой же результат даст строчка

trace ( rocket );

Значит, обращение к клипу тоже неверно.

Дело в адресах. В обработчиках событий клипа текущим монтажным столом считается сам клип. Поэтому для того, чтобы обратиться к текстовому полю x, которое принадлежит не клипу, а главному монтажному столу, его адрес надо записать в виде _root.x (абсолютный адрес) или _parent.x (относительный адрес).

В правой части оператора надо обратиться к свойству _x текущего объекта, то есть написать this._x (относительный адрес) или _root.rocket._x (абсолютный адрес). Но можно то же самое написать проще, ведь _x обозначает то же самое, что this._x.

  Чтобы не ошибиться при обращении к объекту, можно нажать на кнопку и выбрать из списка существующий объект. Программа автоматически вставит его адрес, относительный (при выборе варианта Relative) или абсолютный (вариант Absolute).

  Выделите ракету на сцене и откройте панель Actions (клавиша F9). Исправьте код обработчика события enterFrame:

onClipEvent (enterFrame) { _root.x.text = _x;

}

Попробуйте вставить ссылку на текстовое поле с помощью кнопки.

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

  Заметьте, что координата _x и другие свойства клипа — целые числа. При записи в текстовые поля они будут автоматически преобразованы в символьный вид.

Значения свойств клипа можно не только читать, но и изменять. После загрузки клипа в память мы установим его начальные координаты в обработчике события load.

  Добавьте в код клипа Ракета обработчик события load (клип загружен в память):

onClipEvent (load) { _x = 100;

_y = 100;

}

к началу 6. «Мышиные события»

Теперь займемся событиями от мыши. Кнопки и клипы могут обрабатывать несколько «мышиных» событий:

press — над объектом нажата кнопка мыши;

release — над объектом отпущена кнопка мыши;

releaseOutside — кнопка мыши отпущена вне объекта;

rollOver — указатель мыши наведен на объект (без нажатия);

rollOut — указатель мыши ушел с объекта (без нажатия);

dragOut — указатель мыши ушел с объекта при нажатой кнопке;

dragOver — при нажатой кнопке мышь уходит с объекта, а затем наводится на него снова (аналогия — «чистим ботинки»).

Мы сделаем так, чтобы при событии rollOut ракета становилась немного более прозрачной (на 5 процентов). Для этого надо уменьшить значение _alpha.

  Добавьте обработчик события мыши для клипа Ракета:

on (rollOut){ _alpha -= 5;

}

Заметьте, что параметр _alpha по смыслу не должен быть меньше нуля. Будет неплохо, если вы сможете обеспечить это условие, добавив в обработчик условный оператор if.

Перетаскивание

Перетаскивание мышкой тоже делается очень просто: при нажатии кнопки на объекте (событие press) надо «захватить» объект и начать перетаскивание:

startDrag ( this );

В скобках указывается адрес объекта (this означает «текущий объект», то есть клип).

При отпускании кнопки (событие release) надо закончить перетаскивание:

stopDrag();

  Добавьте обработчики событий мыши для клипа Ракета:

on ( press ){

startDrag(this);

}

on ( release ){

stopDrag();

}

В скобках после слова on можно перечислять через запятую несколько событий, на которые надо реагировать одинаково. Для этого часто удобно использовать средство Script Assist (помощник скриптов).

  Выделите строчку кода on(release) и щелкните по словам Script Assist в правом верхнем углу панели Actions. Отметьте флажок releaseOutside и закройте окно повторным щелчком по словам Script Assist.

Теперь при отпускании мыши за пределами клипа перетаскивание также заканчивается.

«Мышиные события» клипа

Клип, как уже говорилось, также может реагировать на события mouseDown, mouseUp и mouseMove. Важно, что эти обработчики вызываются не только тогда, когда мышь над клипом, а при любом изменении состояния мыши. При этом координаты курсора хранятся в свойствах _xmouse и _ymouse главного монтажного стола _root.

Например, мы сделаем, чтобы ракета вращалась против часовой стрелке, если мышь двигается в левой половине поля, и по часовой стрелке, если в правой. Для этого надо написать обработчик события mouseMove, в котором менять свойство _rotation клипа Ракета. Чтобы определить направление вращения, будем сравнивать x-координату клипа с половиной ширины окна, то есть с _root._width/2.

  Добавьте еще один обработчик к коду клипа:

onClipEvent (mouseMove) {

if (_root._xmouse < _root._width/2)

_rotation -= 0.5;

else _rotation += 0.5;

}

При просмотре обнаруживается неточность: во время перетаскивания ракета продолжает вращаться, ведь событие mouseMove происходит и вызывается обработчик. Чтобы прекратить вращение во время перетаскивания, надо где-то запоминать, что мы тащим ракету. Легче всего сделать это при помощи специальной логической переменной dragging, которая может принимать значения true («да», истина) и false («нет», ложь). В начале перетаскивания мы запишем в эту переменную true, а когда перетаскивание закончено, запишем в нее false.

  Измените обработчики событий:

on ( press ){

startDrag(this);

dragging = true;

}

on ( release, releaseOutside ){

stopDrag();

dragging = false;

}

Теперь можно использовать значение этой переменной в обработчике mouseMove — вращать ракету только тогда, когда dragging=false.

  Измените обработчик события:

onClipEvent (mouseMove) { if ( ! dragging ) {

if (_root._xmouse < _root._width/2)

_rotation -= 0.5;

else _rotation += 0.5;

}

}

Восклицательный знак означает операцию НЕ, так что условный оператор if(!dragging) имеет смысл «если не тащим ракету». Только при этом условии изменяется свойство _rotation.

Отличие кнопки от клипа

Как мы видели, кнопки и клипы могут обрабатывать события мыши с помощью обработчиков on (...). Однако код кнопки не может содержать обработчиков onClipEvent (...), которые предназначены только для клипов.

  Главное отличие кнопки от клипа состоит в том, что кнопка (символ типа Button) — часть монтажного стола, на котором она находится, а клип (Movie Clip) имеет свой собственный монтажный стол.

Это означает, что у кнопок нет методов play() и stop().

Когда мы используем команду stop(); или this.stop(); в обработчике события кнопки, мы останавливаем проигрывание на ее монтажном столе (в данном случае — на _root).

Если же эта команда используется внутри обработчика клипа, она останавливает проигрывание этого клипа (внутреннюю анимацию).

Если команда

_rotation += 45;

стоит в обработчике кнопки, на 45 градусов повернется ее монтажный стол, то есть _root. Та же самая команда в обработчике клипа повернет на 45 градусов этот клип.

А если нужно повернуть кнопку? Это тоже можно сделать, но иначе, используя ее относительный или абсолютный адрес. На панели Properties введем имя кнопки. Пусть, например, кнопка с именем btn находится на главном монтажном столе _root. Тогда ее адрес может быть записан как _root.btn или (при обращении с _root) просто btn. Повернуть кнопку в ее же обработчике можно с помощью команды

btn._rotation += 45;

или (из любого места программы!)

_root.btn._rotation += 45;

к началу 7. Клавиатура

Проще всего «ловить» нажатие клавиш с помощью события keyPress. В заголовке обработчика после слова keypress в кавычках ставится нужный символ, например:

on (keyPress "A") {... }Для специальных клавиш указывают название в угловых скобках, например, "<Left>" (влево), "<Right>" (вправо), "<Up>" (вверх), "<Down>" (вниз).

  В код клипа добавьте обработчики событий клавиатуры. Для клавиши «влево»:

on (keyPress "<Left>"){

_x -= 2;

}

и аналогично для остальных клавиш-стрелок.

К сожалению, в одном обработчике можно задать только реакцию на одну клавишу. Несколько большую свободу дает использование событий клипа keyDown и keyUp, но их обсуждение мы отложим до следующих уроков.


Похожие работы:

«Расписание занятий НКО КДМ № п\пПолное наименование организации ФИО руководителя Контакты День недели Часы работы 1 Алтайская краевая общественная молодёжная творческая организация Браво Фирсова  Марина Валентиновна 8-963-575-8809 Понедельник 08:20 – 19:00 Среда 08:20 – 19:00 Пятница 17:00 – 19:00 2 Творческая студия BR...»

«Аннотация рабочей программы учебной дисциплины Энергоснабжение инфокоммуникационных систем название учебной дисциплины1. Область применения программыРабочая программа учебной дисциплины является частью программы подготовки специалистов среднего звена ГБПОУ УКРТБ в соответствии...»

«Контрольная работа по теме:Австралия и Океания I Вариант Часть А Выберите верный ответ1. Австралия это.а) Самый влажный материкб) Самый жаркий материв) Самый сухой материкг) Сам...»

«Российская Федерация Свердловская область Дума Кушвинского городского округа второго созываРЕШЕНИЕ от 19 сентября 2013 г. № 202О внесении изменений и дополнений в Прогнозный план приватизации муниципального имущества Кушвинского городского округа...»

«Санитарно-эпидемиологические правила и нормативы СанПиН 2.4.1.3049-13 Раздел VIII. Требования к отоплению и вентиляции п.8.5. Все помещения дошкольной организации должны ежедневно проветриваться. Скв...»

«Стоимость меню с человека 2500 рублей Обслуживание (в зависимости от количества персон 8000-10000 рублей) Накрытие банкетное (юбки, скатерти, салфетки), обслуживание официантами, горячее готовится поваром-мангальщиком. МенюБлюда на мангале: Шашлыки из свиной шейки 150гр. Люля-кебаб из баранины 150гр. Цыпленок гриль на мангале 200гр. Фо...»

«Об общей идее Концепции системы государственного управления Сначала рассмотрим капиталистическую систему государственного управления, четко обозначив её недостатки. Основанная на ныне действующей Конституции РФ российская система государственного управления является частным случа...»

«Практическая работа №6 Тема: "Устройство подкачивающего насоса дизельного двигателя, форсунок" Цель: Сформировать практические навыки по разборке и сборке форсунок. Закрепить теоретические знания и углубить п...»









 
2017 www.docx.lib-i.ru - «Бесплатная электронная библиотека - интернет материалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.