Copyright © 2004 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
опыты с бабочкой | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
мы познакомимся с некоторыми основными понятиями | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
сцена (размер сцены и цвет фона) и инспектор свойств ("Property inspector") окно образцов ("Cast Window") окно партитуры ("Score Window") импорт и связанные файлы(linked files) скрипты("behaviors") кадров и спрайтов зацикливание фильма в одном кадре вставка заготовок программного кода использование Help'a Director'a комментарий и форматирование текста скрипта область видимости (переменные global, local, property ) отслеживание переменных в окне "Watcher" и "Message Window" диалоговое окно с сообщением (alert) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
сцена и инспектор свойств | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сначала создаём новый файл. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
окно образцов ("Cast Window") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вызываем "Cast
Window" Двойным щелчком по бабочке на сцене вызываем окно свойств GIF-файла.
Нажав на кнопку "play", мы увидим, что бабочка очень быстро
машет крыльями. Исправим это, выбрав "Fixed" из выпадающего
списка "Rate". Можно оставить значение "15" в поле
"fps"(кадров в секунду), а можно увеличить или уменьшить его,
соответственно ускорив или замедлив полёт бабочки. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
окно партитуры ("Score Window") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Зацикливаем действие
во 2-м кадре. Для этого вызываем партитуру спрайтов ("Score Window") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
скрипты("behaviors") кадров и спрайтов | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Щелчком правой кнопки мыши в зоне
скриптов кадра (например, в кадре "2") вызываем контекстное
меню и выбираем "Behaviors..." Нажав на кнопку со знком плюс в группе "Events", выбираем "Exit
Frame" |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
вставка заготовок программного кода | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
затем, нажав на кнопку "Script Window", открываем скрипт "бабочка" в окне скриптов. ![]() Нажав кнопку "Lingo в алфавитном порядке" выбираем из выпадающего списка нужное нам слово "property" и допечатываем (уже в окне скриптов) название нашего свойства: mySprNum. Это ВСЁ было бы, наверное, легче просто впечатать в окне скриптов :) , но мы не ищем лёгких путей, а учимся работать с окном скриптов. ![]() Теперь переводим курсор в окне скриптов на следующую строку и, нажав на кнопку "Lingo по категориям", выбираем функцию "on beginSprite" из раздела "кадры и партитура". Как Вы понимаете, эту же функцию можно найти используя кнопку "Lingo в алфавитном порядке", но мы не ищем лёгких путей, а учимся работать с окном скриптов :) ![]() Ещё нам понадобится функция "on exitFrame", чтобы в каждом кадре проверять, где находится курсор, и, еслинужно, поворачивать бабочку и изменять направление её полёта. Чтобы поместить функцию"on exitFrame" в окно скриптов, пойдём другим путём, или даже третьим :) . Вызовем "Behavior Inspector", нажав на нужную кнопку в Toolbar. В открывшемся окне "Behavior Inspector", нажав на уже известную кнопку со знком плюс в группе "Events", выбираем "Exit Frame" ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Теперь начнётся самое интересное ! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Опять переводим курсор в окне скрипта "бабочка" на следующую строку и, теперь уже вручную впечатываем заготовку нашей основной рабочей функции ("Handler") "БабочкаЗаМышью" (обязательно в одно слово, цифры недопустимы в начале, зато возможны в середине и в конце) : on ButterflyAfterMouse Как только бабочка появится в нашем фильме, мы должны зафиксировать её
номер спрайта (инициализировать "mySprNum" в "on beginSprite").
Для этого пишем:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
использование Help'a Director'a | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Чтобы узнать, что-же такое "me.spriteNum", щёлкнем правой кнопкой мыши куда-нибудь в "spriteNum" и выберем "Lingo Help" из контекстного меню... Часто бывает полезно посмотреть, как разработчики организовали тот или иной программный код :) .
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вернёмся к нашей рабочей функции.
, где: sdvigH это сдвиг вправо (или влево :), который мы будем потом менять sprite(mySprNum).rotation это угол поворота бабочки sprite (mySprNum).locH это место спрайта бабочки по оси Х ("locH" это "location horizontal")
Можно даже посмотреть на это, нажав на уже извесную нам кнопку ![]() Уже потихоньку летает ! Давайте теперь отследим положение курсора по горизонтальной оси ("the mouseH"). Для этого в уже известном нам списке "Lingo в алфавитном порядке"(кнопка "L") выберем "if...then...else...end if"(на буковку " i "). Этот приём хорошо бы отработать, так как это действительно удобнее, чем каждый раз набирать вручную . ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
комментарий и форматирование текста скрипта | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дело начинает потихоньку запутываться
:) , поэтому нам не обойтись без комментариев к своему же программному
коду. В "Директоре" это делается просто: пишем пояснения и жмём
на кнопку "comment"
![]() , и комментарий не только отмечается красным цветом, но и пропускается компилятором. Чтобы всё было автоматически отформатированно, нажмём клавишу
"Tab"
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
отслеживание переменных в окне "Watcher" и "Message Window" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Прежде чем продолжить дрессировать
нашу бабочку, давайте попробуем отследить какое-нибудь значение в окне
Watcher. К примеру, выделим "the mouseH", а затем нажмём кнопку:
Зато локальная (local) переменная "sdvigH" может быть "видна" окном "Message Window" только из последней строки функции "ButterflyAfterMouse". Вставим туда строку "put sdvigH" и, запустив фильм , увидим это. Из других функций эта строка будет генерировать ошибку "переменная использована до того, как ей присвоено какое-либо значение", то есть будет "не видна". |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После небольшого лирического :) отступления давайте продолжим дрессировать бабочку. Заставим её поворачиваться вверх и вниз в сторону указателя мыши. Вставим новый код, отмеченный жирным шрифтом, старый код - серый, еле видный:
Уже летает вверх-вниз и вправо-влево. Но сразу захотелось,чтобы ещё и
по диагонали!
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
диалоговое окно с сообщением (alert) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ну и чтобы, долетев до кончика курсора-стрелки,
бабочка не трепыхалась, как на булавке, мы выведем окно-сообщение с надписью
"долетела :)" . Сделать это тоже не сложно. Нужно выполнить
команду: alert "долетела :)" ,как только координаты бабочки
и указателя ураняются. Проверяем это строкой: Вот, пожалуй, и всё.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
на главную | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||