Пример API рисования: наглядный алгоритмический генераторFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий Пример наглядного алгоритмического генератора динамически рисует в рабочей области несколько так называемых «спутников», т.е. кругов, двигающихся по круговой орбите. К числу используемых функций относятся следующие:
В примере из предыдущего подраздела показана анимация «спутника», выполненная с помощью события Event.ENTER_FRAME. Этот пример расширяет предыдущий пример, отображая панель управления с набором ползунков, которые немедленно обновляют отображение нескольких спутников. В данном примере представлена формализация кода во внешние классы и объединение процесса создания спутника в цикл с сохранением ссылки на каждый спутник в массиве satellites. Получить файлы приложения для этого примера можно на странице www.adobe.com/go/learn_programmingAS3samples_flash_ru. Файлы с образцами приложения находятся в папке Samples/AlgorithmicVisualGenerator. Папка содержит следующие файлы.
Установка прослушивателейСначала приложение создает три прослушивателя. Первый прослушивает отправленное с панели управления событие о необходимости обновления спутников. Второй прослушивает изменения размера рабочей области SWF-файла. Третий прослушивает каждый проходящий кадр SWF-файла, используя для перерисовки функцию doEveryFrame(). Создание спутниковПо окончании установки прослушивателей, вызывается функция build(). Эта функция сначала вызывает функцию clear(), очищающую массив satellites и удаляющую все предыдущие рисунки из рабочей области. Это необходимо, т.к. функция build() вызывается повторно всякий раз, когда с панели управления отсылается событие о необходимости выполнения этого действия, например, при изменении настроек цветов. В этом случае спутники необходимо удалить и создать заново. После этого функция создает спутники путем настройки требуемых исходных свойств, таких как переменная position, начинающаяся с произвольной позиции на орбите, и переменная color, которая в этом примере не изменяется влоть до момента создания спутника. По окончании создания к каждому спутнику в массиве satellites добавляется ссылка. Вызов функции doEveryFrame() обновляет все спутники в данном массиве. Обновление позиции спутникаФункция doEveryFrame() является основной для процесса анимации приложения. Она вызывается для каждого кадра с коэффициентом, равным коэффициенту кадров SWF-файла. Так как переменные рисунка меняются незначительно, у пользователя возникает ощущение просмотра анимации. Эта функция сначала удаляет все предыдущие рисунки и перерисовывает фон. Затем она объединяет в цикл все контейнеры спутников, увеличивает для каждого спутника значение свойства position, а также обновляет свойства radius и orbitRadius, которые можно изменить с помощью панели управления. Наконец, с помощью вызова метода draw() класса Satellite выполняется обновление спутника и его перемещение на новую позицию. Следует отметить, что счетчик i увеличивает значения только до переменной visibleSatellites. Это происходит по той причине, что когда пользователь с панели управления ограничивает число отображаемых спутников, оставшиеся в цикле спутники не должны повторно создаваться, а вместо этого должны быть скрыты. Это происходит в цикле, идущем сразу же после цикла, отвечающего за рисование. По завершении выполнения функции doEveryFrame() происходит обновление числа visibleSatellites на всем экране. Ответная реакция на действия пользователяПользователь взаимодействует с системой через панель управления, управляемую классом ControlPanel. Данный класс устанавливает прослушиватель вместе с индивидуальным для каждого ползунка минимальным, максимальным значением, а также значением по умолчанию. При перемещении пользователем этих ползунков вызывается функция changeSetting(). Эта функция обновляет свойства панели управления. Если для изменения требуется повторное создание отображения, отправляется событие, которое впоследствии обрабатывается в основном файле приложения. Как только настройки панели управления изменены, функция doEveryFrame() создает каждый спутник с применением обновленных переменных. Дальнейшие настройкиЭтот пример является только базовой схемой, представляющей способ создания визуальных объектов с помощью API рисования. В целом, в этом примере участвует несколько строк кода для создания довольно сложной интерактивной среды. Тем не менее, рамки этого примера можно расширить с минимальными изменениями. Вот некоторые из способов.
API рисования можно использовать в качестве варианта для создания визуальных эффектов в среде разработок Flash, а также для создания базовых фигур во время выполнения. Его также можно использовать для создания многочисленных визуальных эффектов, которые невозможно создать вручную. Благодаря использованию API рисования и математики пользователь ActionScript обладает всем для реализации большоего количества неожиданных и оригинальных идей. |
|