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", а затем нажмём кнопку: .Откроется окно Watcher'a, в котором будет отображена горизонтальная координата указателя мыши (значение, относительно левого края сцены). При перемещении курсора можно увидеть, как изменяется эта величина. Но есть одна тонкость: Watcher показывает значениетолько глобальных (global) переменных переменных, то есть тех, которые могут быть доступны из любого скрипта. А в нашем скрипте "бабочка" есть ещё два типа переменных: свойство (property) "mySprNum" и локальная (local) переменная "sdvigH". У них разная, так называемая, область видимости. То есть свойство (property) "mySprNum" должно читаться в любой функции, но только в скрипте"бабочка", а локальная (local) переменная "sdvigH" может быть "видна" только внутри функции "ButterflyAfterMouse". Проилюстрировать это можно так: выделим "sprite (mySprNum).locH" и нажатием кнопки Watcher'a посмотрим значение горизонтальной координаты бабочки. Оно будет <Void>, то есть не обьявленное. Посмотреть значения этих переменных можно в окне сообщений ("Message Window") . Вызовем его кнопкой . В конец функции "on beginSprite" (перед "end") вставим строчку "put sprite (mySprNum).locH" и, запустив фильм , увидим в "Message Window" начальную горизонтальную координату бабочки. А если мы вставим эту же строчку в другие функции, то увидим покадровое изменение этого значения. Зато локальная (local) переменная "sdvigH" может быть "видна" окном "Message Window" только из последней строки функции "ButterflyAfterMouse". Вставим туда строку "put sdvigH" и, запустив фильм , увидим это. Из других функций эта строка будет генерировать ошибку "переменная использована до того, как ей присвоено какое-либо значение", то есть будет "не видна". |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После небольшого лирического :) отступления давайте продолжим дрессировать бабочку. Заставим её поворачиваться вверх и вниз в сторону указателя мыши. Вставим новый код, отмеченный жирным шрифтом, старый код - серый, еле видный:
Уже летает вверх-вниз и вправо-влево. Но сразу захотелось,чтобы ещё и
по диагонали!
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
диалоговое окно с сообщением (alert) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ну и чтобы, долетев до кончика курсора-стрелки,
бабочка не трепыхалась, как на булавке, мы выведем окно-сообщение с надписью
"долетела :)" . Сделать это тоже не сложно. Нужно выполнить
команду: alert "долетела :)" ,как только координаты бабочки
и указателя ураняются. Проверяем это строкой: Вот, пожалуй, и всё.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
на главную | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||