Программа для создания флеш-игр без знания языков программирования. Позволяет создавать игры из логических блоков и заранее подготовленных изображений.
Когда-то, наверное, уже пару лет назад, на нашем сайте появилась программа Game Maker , которая позволяла делать игры практически без знания какого-либо языка программирования!
До сих пор данная страница у нас является одной из самых обсуждаемых, и часто в комментариях звучат сетования на то, что с ее помощью нельзя создавать игры, в которые можно было бы играть онлайн. Сегодня мы снова возвратимся к теме игростроения и рассмотрим аналогичную программу, которая-таки умеет делать флеш-игры - Stencyl !
При помощи Stencyl можно создавать 2D-игры любых жанров, но больше всего движок программы «заточен» под различные стрелялки-бродилки. Структурно программа представляет собой целый комплекс инструментов, в котором можно, при желании, создать игру «с нуля» без использования сторонних приложений.
Закрываем всплывающее окошко с информацией о новой версии программы кнопкой «Close» или «Don’t show this again» (если не хотим видеть данное окошко при каждом запуске программы) и взамен него получаем следующее окно:
Здесь нам предлагают создать собственную учетную запись в сообществе разработчиков Stencyl. В принципе, аккаунт можно и не создавать (для этого жмем кнопку «Remind Me Later» внизу), но регистрация дает Вам возможность скачивать дополнительные шаблоны и действия с онлайн хранилища под названием StencylForge, поэтому не помешает:). Для заведения учетной записи нажимаем кнопку «Create an Account» и переходим к форме регистрации:
Здесь заполняем стандартные поля с вашим логином, паролем (два раза) и адресом электронной почты, после чего нажимаем кнопку «Sign Up». Если все пройдет удачно, то перед Вами наконец откроется интерфейс стартового окна программы.
Внешне рабочее пространство стартового окна Stencyl разделено на несколько зон:
В верхней части традиционно находится строка меню и панель инструментов. Здесь собраны все основные настройки и кнопки управления. Под панелью инструментов у нас есть небольшая узенькая серая полоска. На ней располагаются вкладки (да - интерфейс Stencyl многовкладочный, что очень удобно) и кнопки быстрого переключения между ними (справа).
Основная же рабочая область разделена на две части: в левой находится панель навигации по разделам программы, а в правой - основной контент (на основном экране - список игр), меняющийся в зависимости от активного в данный момент режима работы. Внизу есть еще несколько дополнительных кнопок, которые позволяют:
Для самостоятельного изучения возможностей Stencyl Вы можете пройти обучающий курс (и желательно бы его пройти), а также открыть одну из готовых игр, которая наиболее соответствует Вашей задумке, и посмотреть, как там все устроено. А я предлагаю изучить работу программы на примере создания игры о приключениях символа нашего сайта и его виртуального жителя - Фриды Бест!
Если Вы, перед тем как собрались создавать свою игру, посмотрели стандартные примеры игр на Stencyl, то могли заметить, что в основном все они довольно простые, одноэкранные и имеют вид сбоку. Мы же будем делать динамический шутер с видом сверху и стрельбой при помощи мышки! Все как в «больших» играх:).
Для своего проекта Вы можете изменить логику одного из готовых шаблонов, но мы не ищем простых путей и потому - только «с нуля», только «хардкор»:). Для этого нажмем на панели инструментов рабочей области (или в меню «File» - «Create New») кнопку «Create a New Game» и попадем в следующее окошко:
Здесь мы можем выбрать шаблон игры по жанру с уже подобранным заранее набором функций и действий для Вашего проекта. Однако мы будем создавать игру с чистого листа, поэтому выбираем пункт «Blank Game» и жмем кнопку «Next».
На следующем этапе нам потребуется произвести кое-какие базовые настройки:
В поле «Name» нам нужно указать название нашей игры, а в разделе «Screen Size» задать размеры игрового поля, указав его ширину (Width) и высоту (Height) в пикселях. После этого жмем кнопку «Create» и переходим непосредственно к интерфейсу редактора игр:
По умолчанию перед нами открывается вкладка «Dashboard», на которой слева собрано все дерево ресурсов игры, а справа находится непосредственно рабочая область. Здесь, думаю, уместно будет внести кое-какие пояснения по структуре «дерева».
Оно состоит из четырех веток, первые две из которых, содержат стандартные наборы ресурсов (RESOURCES) и логики (LOGIC), а две последние опционально могут хранить загруженные вручную ресурс-паки (RESOURCE PACKS) и расширения (EXTENSIONS).
Главной веткой здесь является ветка RESOURCES. Она содержит следующие разделы:
Однозначного мнения по поводу того, в какой последовательности реализовывать ту или иную игру не существует. Тут уж, кому как удобно, но я бы рекомендовал следующий алгоритм:
Создаем первую сцену - создаем персонажа - создаем врагов - создаем бонусы - создаем остальные этапы
Чтобы создать сцену в Stencyl нужно нарисовать ее внешний вид в ветке Scenes. Однако, для того, чтобы рисовать, нам нужно сначала иметь блоки, которыми можно «рисовать». Эти блоки в программе имеют название тайлов (tiles) и хранятся в разделе Tileset:
Набор тайлов являет собой простую матрицу, состоящую из изображений, которые Вы в нее загружаете. Вы можете загружать, как сразу готовую матрицу (картинку, состоящую из нескольких равновеликих изображений в один или несколько рядов), так и дополнять уже существующие наборы отдельными рисунками.
Для начала нам нужно создать новый набор тайлов (кнопка «Create New» в разделе Tilesets), после чего мы увидим окно, как на скриншоте выше. Для загрузки изображения нам нужно нажать кнопку «Choose Image» и выбрать в открывшемся окне Проводника заранее подготовленный файл с нужной картинкой (-ами).
Когда изображение загрузится, зададим ему параметры разбивки и размеры по ширине и высоте, после чего (если все правильно отображается) можно добавлять изображение в набор нажатием кнопки «Add».
Для каждого изображения (тайла) в матрице можно настраивать параметры взаимодействия с игровыми персонажами и предметами. Для этого нужно выделить нужный тайл и получить доступ к следующему окну:
В верхней части правой панели откроется раздел «Collision Bounds» (границы столкновений). Здесь мы можем выбрать произвольную форму, обозначающую границы взаимодействия нашего объекта с игровыми персонажами. По умолчанию у всех тайлов стоит параметр «Square» (квадрат), который делает тайл полностью непроходимым и твердым. Если же Вам нужно сделать тайл «прозрачным» для персонажей (например, пол), то достаточно задать параметр «No Collisions».
Помимо границ, для каждого тайла можно задать анимацию, добавив кадров при помощи кнопки «Insert Frames» на нижней панели. По умолчанию скорость анимации равняется 100 миллисекундам, однако для каждого кадра это число можно произвольно изменить.
Для этого достаточно дважды кликнуть по нужному кадру левой кнопкой мыши и в открывшемся окне изменить показатели задержки так, как нам того требуется. Также имеется возможность подкорректировать выбранный кадр при помощи встроенного графического редактора, который открывается кнопкой «Edit Frame».
После того, как набор тайлов сформирован, логично перейти к следующему шагу - формированию из добавленных изображений готового игрового пространства. Сделать это можно, нажав кнопку «Create New» в разделе Scenes. После нажатия кнопки мы попадем в окно настроек сцены:
Здесь нам обязательно нужно в поле «Name» задать уникальное название нашей сцене, указать размеры (ширина и высота в тайлах (по умолчанию) или пикселях), а также опционально (то есть, по собственному желнию) задать фоновой цвет для новой сцены. Жмем «Ok» и попадаем в редактор уровня:
С виду он напоминает графический редактор. По центру находится рабочая область, где мы и рисуем наш уровень. Слева и сверху находятся небольшие панели инструментов. Справа же расположились панели палитры, выбора наборов тайлов и управления слоями. Теперь, как все это работает…
Первым делом рисуем фон нашей рабочей области. Для этого на правой панели активируем вкладку «Palette» а на ней вкладку «Tiles» и выбираем нужный тайл из представленного перечня. Затем на левой панели выбираем инструмент «Карандаш» (Pencil) и рисуем выбранным тайлом нужные области.
За счет поддержки слоев, тайлы могут накладываться друг на друга, поэтому логичнее всего организовывать уровень с учетом того, что, например, на слое «Layer 0» у нас будет находиться фоновая подложка, выше, слой с препятствиями и персонажами, а еще выше - слой с различными счетчиками и игровыми индикаторами.
Управлять слоями можно при помощи кнопок под панелью «Layers». Здесь имеются кнопки для создания, удаления, перемещения и переименования слоев. Кроме того, любой слой можно скрыть или отобразить, нажав на кнопку в виде глаза справа от имени слоя.
После того, как у нас создана первая сцена настало время «заселить» ее различными игровыми персонажами. В Stencyl они зовутся «актерами» и хранятся, соответственно, в разделе «Actor Types». Создаются актеры по одному и тому же принципу, поэтому рассмотрим мы этот процесс на примере создания главной героини нашей игры - Фриды.
Чтобы добавить нового актера достаточно зайти в вышеупомянутый раздел Actor Types и нажать там кнопку «Create New». Нас уже привычно снова спросят о том, как мы хотим назвать новый игровой объект, после чего перед нами появится окно редактирования анимации персонажа:
Здесь в левой части выводится список добавленных анимаций актера (по умолчанию пустой кадр «Animation 0»), а в правой находятся инструменты добавления и настройки этих самых анимаций.
Выбираем пустую анимацию (или добавляем новую кликом по кнопке с плюсом внизу) и кликаем в правой части по полю «Click here to add a frame». После этого откроется окошко добавления изображений, которое похоже на аналогичное окно для добавления новых тайлов в набор. Нажимаем кнопку «Choose image», выбираем нужное изображение и настраиваем его разбивку и размеры (если нужно).
Когда все настроено, жмем кнопку «Add» в правой нижней части окна добавления - анимация должна отобразится в виде превью в левой секции:
Теперь нам осталось только настроить скорость смены кадров (двойной клик на любом из кадров) и некоторые дополнительные параметры, типа, названия (Name) анимации (очень пригодится для сложных проектов), цикличности (Looping) воспроизведения (по умолчанию активно), синхронизации и базовой точки (Origin Point) происхождения спрайта (по умолчанию - центр).
На нижней панели инструментов в правой секции мы обнаружим ряд кнопок. Они позволяют:
Выше мы сделали анимацию бега Фриды, использовав для этого всего два кадра, которые являются, по сути, отраженным по горизонтали одним и тем же рисунком. Теперь нам нужно сделать так, чтобы мы могли при помощи мыши и клавиатуры управлять движением нашей героини, а также, чтобы она адекватно реагировала на столкновения с преградами, которые мы нарисовали на сцене.
Первым делом настроим столкновения. Для этого посмотрим на строку под списком открытых вкладок и найдем там кнопку «Collision».
По умолчанию область столкновений являет собой квадрат, описанный вокруг всего спрайта анимации. То есть, событие столкновения будет происходить по всей площади объекта. Однако, на практике наша картинка чаще всего содержит и дополнительные элементы (у Фриды, например, бластер), которые по идеи не должны бы ни с чем взаимодействовать. Именно при помощи данного раздела мы и можем настроить все области столкновений.
Для начала уменьшим область вокруг Фриды до размеров только ее тела. Здесь нужно учесть, что двигать область мышкой мы не можем, а для настроек используются четыре числовых параметра в секции «Current Shape». Вначале мы задаем сдвиг области по горизонтали (от левого края) и вертикали (от верха), а затем указываем новые ширину и высоту области столкновений.
Ниже есть еще несколько параметров, объединенных в секцию «Physical Properties». Здесь мы сталкиваемся с галочкой «Is a Sensor?» и понятием групп.
Если активировать флажок «сенсора», то выделенная область перестанет быть физическим объектом: персонаж или его часть станет как-бы «прозрачной» для различных преград, но в то же время сохранит возможность запускать какие-либо действия при определенных условиях.
Примером из реальной жизни может быть современная сигнализация с использованием лазеров: сам лазер мы не видим, но, если коснемся его, то запускается процесс оповещения о том, что мы залезли не туда, куда надо:).
Теперь, для чего нужны группы… Предположим, что у нашего персонажа в руках не бластер, а меч, которым он (точнее она:)) рубит в капусту врагов (кстати в исходнике у Фриды есть лазерный клинок;)).
Задача состоит в том, чтобы при касании к врагу мечом, враг погибал, но если мы промазали, и супостат задел Фриду, то у нее отнималась какая-то доля энергии. А главная проблема здесь то, что анимация удара у нас, по сути, является картинкой, на которой одновременно присутствует и Фрида, и меч…
Если мы привяжем к картинке действие меча, то, кто бы ни касался нашей героини при проигрывании анимации, он будет погибать от удара. И вот как раз для того, чтобы разделить картинку на несколько объектов с разными возможностями и параметрами и был придуман механизм групп.
По умолчанию у нас существует только одна область, которая соответствует самому персонажу («Same as Actor Type»). Однако при помощи инструментов рисования над основной рабочей областью мы можем создать новые виртуальные объекты и задать для них группу при помощи кнопки «Edit Groups».
Со столкновениями, пожалуй, все, а теперь предлагаю разобраться с самым основным - настройкой поведения актера на сцене. Для этого нам нужно перейти в раздел «Behaviors»:
По умолчанию здесь вначале нет ни одного действия, но мы можем их добавить, нажав кнопку «Add Behavior» в левом нижнем углу. Перед Вами откроется перечень готовых к применению функций для управления персонажем или его взаимодействия с другими актерами на сцене.
Я для примера выбрал поведение «8 Way Movement», которое подразумевает передвижение актера по кругу в любую сторону. Теперь выбираем добавленное действие в списке слева и в правой части мы сможем настроить его параметры.
Если Вы следовали инструкции, то у Вас уже должен быть необходимый минимум ресурсов для игры. Осталось научиться добавлять актеров на сцену и тестировать работоспособность игрового пространства.
Возвращаемся в редактор созданной ранее сцены и вновь активируем палитру (Palette), но теперь вместо тайлов, включим вкладку «Actors» (Актеры). Перед нами появится список созданных ранее персонажей, которых мы сможем добавить на сцену при помощи инструмента «Карандаш»:
Главная героиня у нас одна, поэтому достаточно всего одного нажатия карандашом, чтобы добавить ее на сцену. И теперь наступил момент истины - первое тестирование! Чтобы запустить предварительную компиляцию проекта достаточно нажать кнопку «Test Scene» в правом верхнем углу вкладки с нашей сценой. Спустя некоторое время (первая компиляция всегда длится дольше) мы сможем полюбоваться своими трудами во флеш-плеере:
Помимо самого плеера с игрой сбоку у нас отображается окошко логов работы игры. С их помощью мы можем достаточно быстро найти неполадки в работе и попытаться их исправить.
Как видим, двигать Фриду в разных направлениях мы уже можем, но сама сцена остается неподвижной и стоит наше героине выйти за край видимой части сцены, как она исчезает… Непорядок:). Решить проблему можно, добавив Фриде поведение «Camera Follow» или настроив нужные параметры при помощи событий.
Также, нелишним было бы заменить стандартный курсор на что-то более подходящее, например, прицел. Это мы можем реализовать, добавив нового актера в виде прицела, убрав у него область столкновения и прикрепив к сцене при помощи стандартного поведения «Custom Mouse Cursor»:
Простые игры в Stencyl можно создавать при помощи одних только стандартных поведений (Behaviors), однако, если нам требуется что-то нестандартное, то тут уже придется подумать над использованием событий, которые настраиваются для актеров и сцен в разделе «Events»:
По сути, поведения (Behaviors) тоже строятся на базе событий, но они имеют еще и визуальный интерфейс, что упрощает редактирование. Здесь же мы имеем дело непосредственно с функциональными блоками, которые выполняют те или иные действия.
Окно событий делится на три секции:
Собственно, сам алгоритм создания событий мы уже описали, но дать какие-то универсальные рекомендации я, увы, не могу - для каждой игры события будут разными и их может быть довольно много… В качестве примера можете посмотреть исходники игры про Фриду, которые вы найдете в архиве с программой, но это - лишь ориентир, поскольку работа над событиями - Ваше личное творчество:).
Мы с Вами уже рассмотрели много чего, но не коснулись некоторых дополнительных тем, которые могут быть очень важными при создании игр - я говорю о настройке всевозможных свойств наших актеров и сцен. Эти параметры у нас хранятся в двух последних вкладках. И первая из них - «Physics»:
Для сцен и актеров вкладка настройки физики выглядит по-разному. На вкладке с настройкой физики сцены находится всего два параметра - настройка горизонтальной и вертикальной гравитации. Внешний же вид секции настроек физических параметров актеров представлен на скриншоте выше и состоит из пяти вкладок с различными опциями:
С физикой разобрались, а теперь посмотрим на свойства, которые вызываются нажатием кнопки «Properties»:
Как и в предыдущем случае, для сцен и актеров свойства будут разными. В свойствах сцены мы можем указать ее имя («Name»), размеры (секция «Size») и фоновой цвет («Background Color»).
В свойствах же актера можно, помимо имени, задать описание (поле «Description») объекта, группу, к которой относится актер (секция «Choose Group») и слой анимации для мобильных устройств (здесь можно ничего не менять, поскольку бесплатная версия программы не позволяет экспортировать игры в форматы для мобильников.
Но и это еще не все настройки, которые нам доступны в Stencyl. Общие настройки игры доступны нам по нажатию кнопки «Settings» на основной панели инструментов:
В окне настроек слева находится список групп параметров, а справа - основная область (иногда разделенная на несколько вкладок), содержащая всевозможные опции. Здесь нас интересуют следующие разделы:
Собственно, вот и все настройки, которые нам будут нужны для создания флеш-игр в бесплатной версии Stencyl. Но раз уж этот раздел о настройках, то тут грех не упомянуть о параметрах самой программы. Получить к ним доступ можно, активировав пункт «Preferences» в меню «File»:
В программе предусмотрена поддержка многоязычности интерфейса, однако, на данный момент существует только английская локализация, поэтому мы и перешли сразу ко второй вкладке - «Workspace». Дело в том, что в третьей версии Stencyl появилась функция автоматической генерации адаптивных изображений из загруженных спрайтов.
И по умолчанию стоит увеличение спрайта в два раза, что влечет за собой ухудшение качества графики. Чтобы этого не происходило, советую отключить переразмеривание картинок, выбрав в поле «Scale» значение «Standard (1x)».
Также советую заглянуть на третью вкладку - «Editors». Здесь можно ассоциировать действия обработки графики, звука и текста с внешними более продвинутыми (нежели встроенные в Stencyl) редакторами.
Мы с Вами рассмотрели практически все нюансы работы в Stencyl, но не коснулись одной из самых мощных возможностей - работы с переменными .
Переменные в любом языке программирования позволяют оперировать различными событиями, выражая их через определенные числа (числовые переменные), условия (булевые переменные), тексты (строковые переменные) и т.д. Главная особенность переменных - возможность замещать собой любое значение в заданных заранее рамках. Простой пример переменной: дежурный в классе. Сегодня им может быть Иванов, завтра Петров, а послезавтра Сидоров:).
В нашем случае переменная «дежурный» может принимать одно из трех значений, которое будет автоматически подставляться в зависимости от заданного условия (например, очередности фамилий в списке).
В Stencyl переменные могут быть локальными и глобальными. Локальные переменные мы можем объявлять в рамках какого-нибудь события или поведения, и они будут работать только для указанных действий. Создать локальную переменную можно в редакторе событий, вызвав раздел «Attributes»:
Здесь у нас есть несколько вкладок:
Алгоритм создания локальной переменной прост: вначале создаем новый блок во вкладке «Getters», а затем находим во вкладке «Setters» только что созданную переменную и добавляем блок с ней на рабочую область, приравнивая к какому-либо игровому параметру. Вот и все - переменная объявлена и получила набор допустимых значений.
Глобальные переменные (Game Attributes) в Stencyl задаются сразу для всей игры и могут быть вызваны в любом событии или поведении. Как уже говорилось выше, создать их можно в разделе «Attributes» на вкладке «Game Attributes»:
Однако просматривать все созданные переменные и управлять ими гораздо удобнее при помощи раздела «Attributes» в настройках (кнопка «Settings» на панели инструментов или «Show Game Attributes» на вкладке «Game Attributes» в редакторе событий):
Здесь у нас представлен весь список глобальных переменных и имеется возможность создавать новые при помощи нажатия кнопки «Create New». Для новой переменной мы можем тут же задать тип (числовая, текстовая, булева или массив) и стартовое значение, не покидая пределов окна, что очень удобно на мой взгляд.
При помощи глобальных переменных очень удобно реализовывать различные счетчики, поскольку данные в них сохраняются при переходе игрока на новые уровни и хранятся в памяти до тех пор, пока включена сама игра. Также, рекомендую использовать глобальные переменные для отслеживания проигрываемой анимации.
Задав актеру определенный спрайт в событиях, мы можем ниже приписать этому спрайту определенное значение в переменной (например, порядковый номер или имя анимации). Таким образом, связав действие с переменной, мы сможем вызвать его в любой момент, задав этой переменной нужное значение.
Наконец-то мы, хоть и бегло, но ознакомились с основными принципами работы со Stencyl. Предположим, мы создали игру, проверили ее и все оказалось рабочим. Теперь дело за малым - превратить игру из проекта в реальный SWF-файл, который можно выложить в Интернет. Для этого нам достаточно открыть меню «Publish» и в списке «Web» кликнуть пункт «Flash».
Запустится компиляция файла игры, после чего появится запрос, куда и под каким именем сохранять полученный флеш-файл. Сохраняем и все - игра готова:).
Обратным процессом будет импорт игры. Благодаря функции импорта Вы сможете открывать проекты игр других пользователей, например, чтобы подсмотреть, как у них реализована та или иная функция;). Импортировать игру можно также из меню «File». При успешном импорте игра появится на главном экране в списке проектов. Однако здесь стоит сделать небольшую оговорку.
Проблема в том, что новый Stencyl 3.0 имеет только частичную совместимость с проектами, созданными в более ранних версиях, поэтому работоспособность импортированного Вами проекта игры может быть неполной или в худшем случае игра вообще не запустится, выдав ошибку. Вариантов у Вас будет немного - либо искать и исправлять ошибки, либо смириться, и оставить все, как есть:).
Из всех существующих сегодня программ для создания флеш-игр Stencyl является максимально разумным компромиссом между простотой работы и широтой возможностей. Радует то, что функционал конструктора в бесплатной редакции практически ничем не ограничен, что позволяет почти в полной мере реализовать любую задумку.
Однако, не стоит забывать о «почти»… Дело в том, что сам Stencyl работает на базе JAVA-машины, которая, как известно, довольно требовательна к ресурсам. Если к этой нагрузке добавить еще и нагрузку, которую создает игра, то получится, что для нормальной работы нам потребуется современный мощный компьютер.
Это первое «почти». А второе - уже упомянутое мною вскользь неявное ограничение на количество объектов на сцене. Даже, если эти объекты всего лишь тайлы, но их много, игра может выдать при тестировании ошибку и не запуститься до тех пор, пока Вы не уменьшите их количество.
Резюмируя, можно сказать, что Stencyl будет идеальным движком для создания всевозможных казуальных флеш-игр и бродилок-стрелялок с видом сбоку. Более того, потренировавшись создавать флеш-игры, Вы сможете приобрести один из типов лицензии и, немного изменив механику, портировать свою игру в форматы, поддерживаемые Android и iOS. А это уже реальный способ заработать деньги, разместив игру на Play Market’е или в App Store!
Напоследок, остается только пожелать удачи всем тем, кто решит всерьез заняться игростроением. Пусть Ваши алгоритмы работают с первого раза, а компилятор сидит и молчит в тряпочку, когда Вы запускаете свои игры:).
P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.
Если Вы работаете с Flash и используете его пока что только для рисования и простой анимации, создание роликов или баннеров, но ни разу не занимались программированием в нём, то вероятно Вам очень хотелось узнать эту сторону flash-а .
Что такое ActionScript ? Как можно писать код на flash-е ? Как можно полноценно программировать во flash ? Какие инструменты для этого лучше всего использовать? В данной статье приводятся ответы на подобные вопросы.
Эта статья послужит хорошим руководством новичка в программировании под flash на ActionScript 3.0 и поможет выбрать лучшие инструменты для этого.
Action Script — это объектно-ориентированный язык программирования, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений.
С помощью Action Script можно создавать интерактивные мультимедиа-приложения, игры и веб-сайты.
Если Вы работаете с графической средой разработки Flash IDE (например Adobe Flash Professional CS5), но ни разу не интересовались где там можно писать программный код, то вероятно Вас уже волнует вопрос «Где же он прячется, этот AS3?».
Создадим новый проект File — New — ActionScript 3.0 (рис. 1).
Рис 1. Создание нового проекта AS3.
Появится пустая сцена с пустым кадром на одном слое. Теперь можно выделить кадр и нажать F9 , тем самым открыть окно «Actions», в котором и находится область редактирования программного кода данного кадра.
Давайте напишем в открывшемся окне следующий код:
ActionScript
var s: String = "its my AS3 code trace!"; trace(s);
var s : String = "its my AS3 code trace!" ; trace (s ) ; |
Рис. 2. Код, написанный в редакторе Flash IDE.
Теперь можно запускать флешку (Ctrl+Enter ). Данный код создаёт переменную s типа String (строка) и присваивает ей начальное значение — строку «its my AS3 code trace! «. Далее, функцией trace() , аргументом которой выступает ново созданная переменная, данная строка (а точнее уже значение переменной s ) выводится во вкладку output , которая по умолчанию в интерфейсе IDE располагается рядом с вкладкой timeline .
Таким образом можно открывать и закрывать(на F9) редакторы кода для любого кадра флеш-приложения.
Вроде картина выходит не плохая — можно создавать разные объекты с анимациями (MovieClip ), либо статичные картинки (Sprite ) и у каждого объекта будут кадры и в каждом кадре можно запрограммировать всё что угодно. Выглядит удобно и гибко. Но это лишь на первый взгляд. Представьте что у Вас десятки объектов с десятками кадров и всем им нужно описать кодом различную или схожую логику поведения. Во втором случае (схожая логика) — это вообще означает сотни схожих строк кода, которые можно будет замучиться даже копировать из кадра в кадр. А представьте что в процессе разработки вам понадобится что-то изменить. Нет — это не дело! Не для этого хаоса был задуман язык AS3!
В добавок, если Вы поработаете редактором кода Flash IDE и, к примеру, работали в какой-нибудь другой среде программирования (Delphi, Visual Studio), то сразу заметите, что данный редактор, мягко говоря, удручает своей не удобностью и недоделанностью.
Что же делать, спросите Вы? Искать сторонние редакторы кода.
Самый лучший вариант для ОС Windows — это FlashDevelop (FD). Скачать свежую версию можно с сайта .
Для iOS хорошей альтернативой является FDT . Ознакомиться можно на оф. сайте .
Т.к. я на данный момент преимущественно обитаю в Windows, то расскажу о редакторе именно под эту ОС. В будущем, когда наберусь опыта в FDT, то напишу и о нём.
В установке нет ничего сложного, качайте свежую версию с оф. сайта и устанавливайте. Редактор совершенно бесплатный и для компиляции использует Flex SDK. Во время стандартной установки FD сам позаботится об установке последнего. Всё что надо установить для FD самому — это Java .
FD имеет массу удобств и особенностей среди которых: горячие клавиши, хорошая авто подстановка, шаблоны классов, возможность создавать свои шаблоны и редактировать имеющиеся.
После установки можно создать новый проект (Project — New Project…), откроется диалог создания проекта, как показано на рис. 4.
Как можно заметить, FD позволяет создавать не только AS3 проекты. Но сейчас нас интересует именно AS3 проект, я предпочитаю выбирать заготовку для проекта с Preloader -ом, который и выбран на рис. 4 . Далее введите имя проекта (поле Name ) и назначьте директорию проекта (поле Location ), если стоит галочка «Create directory for project» , то в директории Location будет создана папка с именем проекта (Name) и в неё уже поместятся файлы проекта, если галочка не стоит, то файлы поместятся в указанную директорию Location.
После создания проекта справа Вы увидите структуру файлов и папок проекта, откройте папку src и откройте двойным щелчком файл Main.as . После чего Вы должны наблюдать код примерно такой же, как на рис. 5.
Попробуем написать какой-нибудь код, например примерно тот же, который пробовали в Flash IDE . Писать можно после комментированной строки «// entry point» т.к. это точка где сцена уже точно создана. напишем команду trace() , на рис. 5. я уже позволил себе это деяние:]
Теперь можно скомпилировать проект (F8 ) или сразу запускать для тестирования (F5 ), после запуска в окне Output вы увидите результат работы функции trace() — вывод строки.
Результаты команды trace()
можно наблюдать только во время запуска приложения из под IDE, в которой компилируется и запускается код.
При запуске файла.swf в браузере или в обычном flash-плеере результат (а т.е. отображение окна output) не будет виден никому.
Теперь я уверен, что Вам уже не терпится сделать свой первый проект на AS3! А для этого нужно приступить к изучению самого языка.
Про AS3 можно конечно писать много, но лучше чем в книгах я вряд ли напишу, тем более что всё уже написано, поэтому моё дело посоветовать лучшую литературу отталкиваясь от своего опыта.
Лучшая книга: Колин Мук — .
Хорошее дополнение к знаниям: Джои Лотт — .
Читал в своё время ещё такую книгу: Рич Шуп — . Написано хоть и не сильно много и подробно, но для новичков сойдёт, если под рукой нет Мука.
Этих книг весьма достаточно для бодрого старта! Читайте и практикуйтесь, практикуйтесь и читайте. Нет необходимости сесть и читать эти книги от корки до корки, т.к. в процессе чтения важно закреплять знания практикой, да и Вам самим будет приятно сделать что-нибудь как можно скорее:]
Во время быстрого поиска документации в инете очень помогает оф. документация от .
Для дальнейшего развития, для хорошего осознания ООП и шаблонов проектирования (а это очень важно для хорошей ООП структуры) Вам будет незаменима следующая книга: Уильям Сандерс, Чандима Кумаранатунг — .
На этом сайте вы так же найдёте не мало аспектов программирования на AS3, накопленных моим опытом.
Или попробовать сделать свой первый прелоадер прочитав статью: Preloader своими руками.
Всего доброго и успешных проектов!
Flash-программирование
программа элективного курса и дидактическое пособие для учителя и ученика
Программа курса. 1
1. Введение: 1
2. Тематика курса: 2
3. Литература: 2
Дидактическое пособие для учителя и ученика. 2
1. Введение, окно «действия кадра». 2
2. Переменные. 4
3. Поля ввода-вывода. 5
4. Условный оператор. 8
5. Циклы «с параметром» и циклы «пока». 11
7. Объектно-ориентированное программирование. 17
8. Программное изменение свойств. 19
9. Трехкадровые циклы. Программная анимация. 22
10. Проект «Интерактивная игра - Тир». 24
Программа Macromedia Flash поражает своими возможностями. Помимо развитых средств для рисования и анимации Flash имеет встроенный язык программирования Action Script. Овладение этим языком позволяет не только создавать программную анимацию, Flash-игры, и интерактивные web-страницы, но и дает знания о технологиях объектно-ориентированного программирования (далее ООП).
Не смотря на то, что создатели Flash постарались сделать программирование простым даже для неподготовленного пользователя, овладение этим инструментов требует достаточно большого времени. Данный курс – элективный, ученики выбирают его для более осознанного выбора профиля в старшей школе. Подробное изучение программы, выполнение серьезных проектов может стать задачей профильных курсов (например «Web-программирование», «Web-дизайн», «Объектно-ориентированное программирование» и др.), а также самостоятельного изучения. Курс «Flash-программирование» предназначен на учеников 9 классов , уже знакомых с Flash-анимацией и основами программирования. В рамках элективного курса вполне возможно освоение основ программирования, технология ООП, выполнение несложных проектов во Flash. Курс включает в себя 8 проектов, в том числе проект Flash-калькулятора и проект интерактивной игры. Курс снабжен дидактическим пособием для учителя и ученика.
Цель курса:
Заинтересовать учащихся, показать возможности современных программных средств для создания интерактивных приложений; познакомить с основами объектно-ориентированного программирования; углубление знаний о Macromedia Flash.
Задача курса:
Познакомить с технологией объектно-ориентированного программирования; показать применение Action Script, для создания интерактивных приложений; создать два проекта: Flash-калькулятор и интерактивную игру «тир».
Требования к знаниям учащихся:
для успешного прохождения данного курса ученики должны обладать начальными знаниями о Flash: создание простейших изображений, работа с символами библиотеки, иметь представления о ключевых кадрах, Flash-анимации, базовых действиях в Action Script.
для успешного прохождения данного курса ученики должны обладать начальными в программировании: владеть такими понятиями, как алгоритм, программа, переменная, знать основные алгоритмические конструкции.
Требования к компьютеру:
Компьютер с установленной программой Macromedia Flash MX (или выше).
Курс «Flash-программирование» рассчитан на 12 часов.
Тематика | кол-во часов |
|
Повторение Flash. | ||
Поля ввода-вывода, алгоритмические конструкции типы полей (статическое, динамическое, вывода); объявление переменных, переменные символьные и числовые, добавление кода к кнопке, условный оператор, цикл с параметром, цикл пока, их реализация во Flash. типовые задачи: расчет стоимости полета, решение квадратного уравнения, возведение в степень, нахождение элемента ряда суммы ряда проект: Flash-калькулятор | ||
Основные понятия ООП объект, свойств, метод, событие | ||
Программное изменение свойств. Программная анимация. изменяемые свойства; создание символов, их имена; изменение свойств символов, особенности выполнения программного кода во Flash, трехкадровые циклы. типовые задачи: создание объекта с изменяемыми свойствами (нажатие на соответствующие клавиши). создание движущегося объекта. проект: Интерактивная игра Тир. |
Программа Macromedia Flash имеет собственный язык программирования Action Script. Он позволяет сделать Flash-ролики интерактивными. Возможности языка достаточно велики, что позволяет создавать серьезные программы. Action Script не является самостоятельным языком программирования. Он представляет из себя набор скриптов – фрагментов кода, которые «живут» только внутри Flash-ролика, что впрочем, не мешает создавать полноценные программы.
Нужно помнить, что Action Script – это событийный язык, то есть выполнение скрипта будет происходить при наступлении события. Таким событием может служить достижение определенного ключевого кадра, например, в последнем ключевом кадре мы добавляем команду stop(). Не смотря на то, что это всего лишь одна команда, это – полноценный скрипт, который будет выполнен при достижении последнего кадра – ролик остановится. Другим событием может служить щелчок мышки на экранной кнопке или нажатие клавишу клавиатуры.
Для того чтобы добавить программный код вам нужно выделить ключевой кадр, в который вы хотите добавить скрипт (или выделить созданную кнопку) и нажать на клавишу F9 (рисунок 1).
Рис. 1 Панель Action.
Давайте рассмотрим основные элементы окна «Action». Левая часть окна занята списком команд, которые вы можете выбирать, дважды щелкая на них левой клавишей мыши. Все команды, а их достаточно много, сгруппированы в двенадцать блоков «Global Function», «Global Properties» и т. д. После щелчка команда переносится в правую часть окна. В нем формируется программный код. Вы можете удалять ненужные команды (клавиша Delete) или перемещать вверх-вниз по скрипту либо с помощью клавиш управления курсором либо с помощью кнопок. Разумеется, вначале перемещаемая или удаляемая команда должна быть выделена. Нижняя часть окна отдана под изменяемые параметры каждой конкретной команды. Например, в команде перехода gotoAndPlay() нужно указывать, к какому кадру нужно перейти при достижении данной строчки. Для этого в скобках нужно набрать необходимый номер кадра.
При написании программного кода удобнее и быстрее набирать код вручную. При этом необходимо помнить, что язык ActionScript внимание на регистр набираемых вами команд. Это означает, что команда GoToandPlay() – будет ошибочной.
Остается добавить, что для запуска кода и просмотра полученного результата нужно войти в режим просмотра ролика, для этого нажать комбинацию клавиш Ctrl-Enter.
Вопросы для повторения:
Что такое скрипт? При каких событиях выполняется программный код в Flash? Как вызвать палитру «Action»? Из каких элементов состоит палитра «Action»? Как из Flash-ролика создать запускаемый файл?
Одним из основных понятий любого языка программирования является переменная. Предполагается, что читатель с понятием переменной знаком, поэтому давайте посмотрим, как оно реализуется во Flash.
Предположим, мы хотим сложить два числа. Для выполнения этого несложного арифметического действия в первом ключевом кадре создайте кнопку: нарисуйте прямоугольник, сделайте подпись, а после полученное изображение конвертируйте в символ (меню вставка – конвертировать в символ, не забудьте задать поведение символа – кнопка). В результате появился объект, который может реагировать на щелчок мыши, в этом легко удостовериться, войдя в режим просмотра ролика.
Первое число будет храниться в переменной x1, а второе в переменной x2. Результат пусть сохраняется под именем summa и выводиться на экран. Для того чтоб сделать поле вывода (подробней об этом в следующем уроке) щелкните на инструмент текст и выделите с помощью него область экрана – будущее текстовое поле. После зайдите в плавающую панель Символ (меню окно – панели – символ) и во вкладке Параметры текста измените тип текстового поля Stutic Text на Dimamic Text (Рисунок 2). Обязательно задайте имя этого поля Переменная – summa. Также, чтобы поле было видно на экране, установите галочку рамка/фон.
Рис. 2 Создание динамического поля для вывода значений.
Теперь сопоставим сделанной кнопке код. Выделим кнопку и нажмем F9.
В левой части окна выбираем блок Операции – Установить переменную. В нижней части окна задаем параметры: переменная – x1, значение 5. Обратите внимание, рядом с полем значение находится переключаемый параметр выражение. Его нужно обязательно выбрать, в противном случае в переменной x1 будет храниться на число 5, а символ. Именно таким способом происходит задание типа переменной. Как вы поняли в AS всего два типа переменных числовой и строковый, заранее описывать типы, как это принято в языке Turbo Pascal. Аналогичные действия проделайте для второй переменной, соответственно ее имя – x2, а значение 8. Нам осталось дописать третью строку - устанавливаем третью переменную, ее имя: summa (такое же как и имя поля вывода), значение: x1 + x2, разумеется, выбран элемент выражение.
В результате этих операций в правой части у вас появляется код, изображенный на рисунке (Рисунок 3). Обратите внимание, каждая команда отделяется точкой с запятой, это Flash делает автоматически. Вначале находится команда on (release), она показывает, что данный код начнет выполняться при отпускании клавиши мыши от кнопки. Так как данный код сопоставляется экранной кнопе, то данная команда добавляется автоматически. После в фигурных скобках идет код, который должен выполняться при наступлении события.
Вот и все! Если вы все сделали правильно, то перейдя в режим просмотра ролика, и нажав на вашу кнопку в поле вывода появляется число 13.
Вопросы для повторения:
Как задать имя переменной для вывода тектовой или числовой информации? Какие типы переменных используются в Flash? Как показать, что созданная переменная - числовая? Как создать кнопку в Flash и добавить для нее программный код? Что означает команда on (release) в начале скрипта?
Изучение нового языка программирования начинается с написания программ, в которых производится ввод начальных значений, после с ними происходят какие-то арифметические преобразования и на экран выводится полученный результат. Для вывода текста на экран в Flash используются текстовые поля. Для создания текстового поля вам нужно выбрать инструмент Текст (на панели инструментов) и поставив курсов в место, где нужно добавить текст вы «рисуете» текстовый блок (Рисунок 4).
Рис. 4 Создание текстового поля.
В результате у вас появляется статическое текстовое поле, в которое вы можете набрать любой текст. Всего существует три типа текстовых полей: статические, динамические и поля вывода. Тип поля задается с помощью вкладки «параметры», панели символ (см. предыдущую главу). Рассмотрим назначение и настройки каждого поля подробней:
Статическое поле применяемся для вывода надписей на сцене Flash. Как следует из названия, это поле не может изменяться программно. Все, что вам доступно, это задать шрифт, размер, цвет и т. д. При наборе текста, данное поле будет автоматически расширяться, отображая вводимый текст в несколько строк. При этом ширина текстового поля будет оставаться той, которую вы задаете при «рисовании» текстового блока. Для ее изменения вам нужно выделить блок инструментом Текст, и передвинуть правый верхний маркер текстового блока.
Рисунок 5
Динамическое поле применяется для создание полей вывода, в них информация может обновляться по ходу выполнения вашего ролика. Для того, чтобы обращаться к текстовому блоку программно, у него должно быть имя, которое задается в поле «переменная» (Рисунок 5). Я советую вам использовать в качестве имен переменных только латинские символы, без пробела. В том же окне вы можете включить свойство Рамка/фон. Теперь на листе появится рамка, в которой будет появляться выводимый текст, это очень удобно. Поле со списком, по умолчанию в нем выбрано Single Line, позволяет задать будет ли текст выводиться в одну строку и ли в несколько (значение MultiLine). Переключатель «выбираемый», по умолчанию он включен, определяет сможет ли пользователь выделять значения из данного поля, например, для того чтобы скопировать их в буфер обмена. Также как и для любого поля, вы можете задавать параметры текста: шрифт, размер, цвет и т. д. Если вы наберете в данном поле какой-либо текст, он будет отображаться до тех пор, пока программа не изменит его значение.
Поле ввода или Input Text применяется для ввода значений с клавиатуры. Окно параметров поля ввода внешне напоминает окно, рассмотренное выше. Главным параметром здесь также является поле «переменная». Вы задаете под каким именем будут записываться данные, введенные пользователем.
Рисунок 6
Понимая назначение текстовых полей вы сможете сделать следующий проект. «В компьютер вводятся стоимость взрослого авиабилета, а также количество взрослых и детей, совершающих полет. Компьютер при нажатии на соответствующую кнопку вычисляет стоимость детского билета (50% от стоимости взрослого) и общую стоимость полета.» Смотри внешний вид программы (Рисунок 6). Как несложно заметить в данной задачи осуществляется ввод значений и вывод результатов, весь код должен выполняться при нажатии на кнопку, а стало быть, должен сопоставлен этой кнопке.
Для начала создайте пять статических текстовых полей, заполните их соответствующим текстом.
Создайте три поля ввода, дайте переменным для каждого поля уникальные имена, например: stv (стоимость взрослого билета), kolv (количество взрослых) и kold (количество детей).
Создайте два динамических поля, дайте переменным для каждого поля уникальные имена, например: std (стоимость детского билета) и itog (итоговая сумма полета).
Сделайте две кнопки «расчет стоимости полета» и «очистка полей»
Для первой кнопки добавьте следующий код (кнопка, правая клавиша – операции):
if (stv==null) {
if (kolv==null) {
if (kold==null) {
itog = stv * kolv + std * kold;
Предпоследняя строка вычисляет стоимость детского билета (половина от стоимости взрослого) и заносит это значение в переменную std (имя соответствующего поля вывода). В последней строке вычисляется итоговая сумма (переменная itog), и ее значение заносится в соответствующее поле вывода.
В принципе, можно было обойтись этими двумя строчками кода. Но так как человек, который будет работать с этой программой вовсе не обязательно будет вводить цифру ноль если дети в полете не участвуют. А это означает, что стоимость детского билета (числовое значение) будет умножаться на пустое значение (строковое значение). Результатом такого «умножения» будет сообщение об ошибке в соответствующем поле вывода. Для предотвращение этого компьютер проверяет является ли поле ввода пустым (kold==null) и если это так, присваивает переменной kold значение равное нулю. Такая конструкция называется условным оператором. Подробней о ней в следующей теме. Если для вас пока сложно работать с условиями, вы можете их опустить, но не забывайте, пустых полей не должно быть!
Для того, чтобы завершить проект, добавим соответствующий код для кнопки «очистка полей»:
Как вы видите при нажатие на данную кнопку каждой переменной, а, следовательно, полю ввода-вывода будет сопоставлено пустое значение (между двумя знаками кавычек ничего нет).
Вопросы для повторения:
Какие типы тектовых полей используются в Flash? Какие изменяемые параметры имеет динамическое текстовое поле? Какой тип поля используется для ввода значений с клавиатуры? Объясните смысл следующей строчки кода: itog = stv * kolv + std * kold;? Для чего в описываемом проекте используется условный оператор?
Программный код, который мы рассматривали до этого – линейный. Каждая команда выполняется лишь после того, как будет выполнено предыдущее действие. В жизни все несколько сложнее. Мы открываем зонт если идет дождь, радуемся если достигли цели, вычисляем корни квадратного уравнения если дискриминант больше нуля. Во всех перечисленных случаях, мы поступаем так или иначе. Для реализации таких ситуаций во всех языках программирования предусмотрен оператор ветвления или условный оператор. Action Script – не исключение.
Рисунок 7
Вызов условного оператора осуществляется щелчком на команде Операции - Если (Рисунок 7). В правой части окна появляется конструкция:
if (<Не установлено>) {
Вместо <не установлено> вы должны написать операцию сравнения, вы набираете ее в поле «Условие». Примером, такого условия может быть z<10, (переменная z меньше десяти).
Рассмотрим основные операции сравнения:
> меньше;
< больше;
>= больше либо равно;
<= меньше либо равно;
Равно (обратите внимание, два знака равенства);
Не равно (обратите внимание, восклицательный знак означает отрицание следующей за ним операции сравнения).
Часто, необходимо одновременного выполнения нескольких условий. Для этого применяются булевы (логические) иперации:
&& или and –логическое И;
|| или or – логическое ИЛИ;
Или not – логическое НЕ.
Например, условие (a == 10) && (z > 5) будет истинным только тогда, когда переменная а равна десяти и одновременно переменная z больше пяти.
Условие – это вопрос на который может быть только два ответа «да» и «нет». Если условие истинно, то выполняются действия, заключенные в фигурные скобки.
Если нам нужно добавить группу команд, которые должны выполняться, когда условие ложно, вам нужно добавить Операции – Else. Тогда фрагмент кода примет вид:
if (<Не установлено>){
Для добавления команд вы должны установить курсор над строкой, где должна появиться команда. Осталось выбрать нужную команду в соответствующем блоке и щелкнуть на ней мышью.
Рисунок 8
Рассмотрим как реализуются изложенные принципы для решения классической задачи – нахождения корней квадратного уравнения. «В компьютер вводятся три числа – параметры квадратного уравнения ax2 + bx + c = 0. На основе введенных данных, компьютер определяет сколько корней имеет данное уравнение, вычисляет их и выводит результаты на экран. Представлен примерный вид окна программы (Рисунок 8).
Для выполнения данного проекта:
Создайте в первом кадре на основной сцене три поля ввода и дайте им соответствующие имена: a, b, c. Сделайте видимыми их границы.
Создайте несколько статических текстовых полей для подписей полей ввода-вывода: x2, =0, дискриминант и т. д.
Создайте четыре динамических текстовых полы: d – дискриминант, r – решение, x1 – значение первого корня, x2 – значение второго корня.
Создайте две кнопки «решить уравнение» и «очистить».
Для первой кнопки «решить уравнение» добавьте следующий программный код, текст, помеченный знаком апострофа – комментарий, его вставлять необязательно:
if (a == null) {
if (b == null) {
if (c == null) {
‘ три первых условных оператора проверяют являются ли поля a, b, c пустыми,
‘ если это так, они присваивают им численные значения равные нулю
‘ вычисляется дискриминант (переменная d).
r = "нет корней";
‘ если условие выполняется – дискриминант меньше нуля переменная d
‘ принимает соответствующее текстовое значение
} else if (d == 0) {
r = "один корень";
x1 = (-b)/(2*a);
x2 = (-b)/(2*a);
‘ используется команда Операции – Else If. Благодаря ему выполнение следующих
‘ действий начинается с проверки условия. Если оно истинно – дискриминант
‘ равен нулю, производятся аналогичные вычисления, переменные, связанные
‘ с текстовыми полями принимают соответствующие значения
r = "два корн" + Chr(255);
‘ самая загадочная строка. Необходимо, чтобы выводилась надпись «два корня»,
‘ но нам не повезло с русской буквой я. Flash воспринимает код, который
‘ соответствует этой букве, как знак переноса на другую строку.
‘ Для этой цели значение символа 255 добавляется к текстовой строке. Такое
‘ действие – соединение двух текстовых строк называется конкатенацией.
kd = Math. sqrt(d);
x1 = (-b+kd)/(2*a);
x2 = (-b-kd)/(2*a);
‘ для вычисления квадратного корня использована команда Math. sqrt(d);
‘ для ее вызова используется команда Объектов – Математика – Sqrt
Нам осталось добавить для второй кнопки следующий код:
Мне кажется, что комментарии тут излишни. Проект готов. Сохраняйте его, тестируйте.
Вопросы для повторения:
Какая конструкция задает в Flash условный оператор? В чем разница конструкций: if (<Не установлено>){} else {} и if (<Не установлено>)}? Как задается отрицание в Flash? Что такое булевы операции, как они записываются в Flash? В чем разница строчек: a=10 и a==10?
Для выполнения повторяющихся действий в языках программирования используются специальные конструкции, которые называются операторами цикла. Таких циклических конструкций несколько, мы рассмотрим две наиболее часто встречающиеся цикл «с параметром» и цикл «пока». Рассмотрим, как они реализованы в языке Action Script.
Цикл «с параметром» применяется в том случае, когда заранее известно сколько раз нужно выполнить определенное действие. Можно провести следующую аналогию - для приготовления супа необходимо почистить шесть картофелин. Если записать действия в виде линейного алгоритма, то можно заметить что шесть раз будут повторяться команды «взять картофель», «очистить кожуру», «вымыть». Для большей компактности алгоритма, а также для того, чтобы в дальнейшем его можно было легко изменять, логичней записать это в виде цикла:
Повторить (6 раз) {
«взять картофель»;
«очистить кожуру»;
«вымыть»;
Здесь цифра шесть – это параметр цикла, количество повторений. То, что взято в фигурные скобки – это повторяемые команды. Они будут выполнены ровно шесть раз.
Рисунок 9
Для создания цикла «с параметром» в Flash, вам необходимо в окне Действия кадра выбрать команду Операции – Для. В результате в правой части экрана появится конструкция цикла (Рисунок 9).
Рисунок 10
Для данной конструкции нужно настроить три поля. Начальное – здесь нужно написать начальное значение некоторой переменной, ее еще называют счетчик. Например, i=1. Условие – до каких пор переменная i будет изменяться. Например, i<=10. Следующий – с каким шагом изменяется переменная i. Если вы хотите, чтобы переменная каждый раз увеличивалась на единицу, то можно записать i++. В результате появляется конструкция:
for (i=1; i<=10; i++) {
Ее смысл в следующем – переменная i будет принимать значения от одного до десяти и десять раз будут выполняться команды, взятые в фигурные скобки. Саму переменную i можно использовать в теле цикла, также там можно использовать другие алгоритмические конструкции, условные операторы и т. д.
Давайте рассмотрим, как реализуется данная конструкция в следующей задаче. «Создать программу, вычисляющую a в степени n (n – целочисленное значение). Значение a и n вводятся в соответствующие поля. Внешний вид программы представлен на Рисунок 10.
Создайте одно динамическое поле и назовите его an.
if (n<>0) {
‘ Задача имеет смысл, только если n > 0, это проверяет условный оператор
for (i=2; i<=n; i++) {
‘ Так как в первой строке переменная an уже приняла значение равное а, поэтому начальное значение счетчика равно двум.
Для кнопки «очистить» добавьте следующий код:
Комментарии мне кажутся излишними.
Цикл «пока» применяется в том случае, когда заранее не известно количество повторений. Продолжим аналогию - когда люди копают картофель они тоже выполняют повторяющиеся действия: «подкапнуть куст», «собрать картофель», «сложить в мешок». Все дело в том, что ни кто не знает сколько раз необходимо выполнить эти действия. Поэтому записать этот цикл можно следующим образом:
Пока (есть картошка?) делать {
Всякий раз, выполнив указанный набор команд необходимо проверить выполняется ли условие, если да, то вновь выполняется тело цикла.
Рисунок 11
Для создания цикла «пока» в Flash, вам необходимо в окне действия кадра выбрать команду Операции – While. В результате в правой части экрана появится конструкция цикла (Рисунок 11).
Для данной конструкции нужно настроить только одно поле. Условие – при каком условие цикл выполняется. Например, y<10.
Обратите внимание, что если при первом обращении к циклу условие не выполняется, то цикл не выполняется ни разу. Также, очень важно, чтобы переменная y изменялась в ходе выполнения цикла, иначе произойдет зацикливание и зависание программы. Также хочется обратить ваше внимание на особенность выполнения программного кода во Flash. Если вы циклически изменяете какое-либо свойство объекта или значение динамического поля, то при запуске вы не увидите быстрое изменение этого свойства или значения. Flash вначале полностью выполнит весь скрипт, и лишь после окончания цикла изменит перерисует экран и изменит данное свойство или значение. Понимание данной особенности нам будет особенно важно в девятом уроке при изучении программной анимации.
Рисунок 12
Любой алгоритм, который можно записать с помощью цикла «с параметром» можно записать и с помощью цикла «пока». А вот обратное не верно. Существуют задачи которые другими способами как использовать конструкцию «While» не решить. Рассмотрим такую задачу. «Известно, что ряд чисел 1, 1/2, 1/3 … 1/n является расходящимся, это значит сумма таких чисел сможет превысить любое наперед заданное число A. Найдите такое n, при котором сумма ряда 1 + 1/2 + 1/3 + … + 1/n станет больше заданного числа А. Внешний вид программы представлен на Рисунок 12.»
Создайте одно поле ввода данных и назовите его a.
Создайте два динамических поля и назовите их соответственно n и s.
Создайте необходимое кол-во статичных подписей «а=», «n=» и т. д.
Создайте две кнопки «вычислить» и «очистить».
Для кнопки «вычислить» добавьте следующий код: