Рисуем снежинку кодом ActionScript 3.0

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

Но, согласитесь, нам на практике, как правило, требуется не одна снежинка, а много-много экземпляров данной снежинки. При таких условиях, правильнее создать класс Снежинка (Snowflake), а затем просто добавлять экземпляры этого класса на сцену флеш-ролика.

Алгоритм рисования снежинки я позаимствовал из другого языка (честно говоря, я это уже давно сделал и первоисточника, к сожалению, не помню), но перевёл этот алгоритм на язык ActionScript 3.0 (можно и на ActionScript 2.0).

Итак, наш класс Snowflake.

Код ActionScript 3.0:

package { /* импортируем необходимые классы */ import flash.display.Sprite; import flash.filters.GlowFilter; /* тело класса */ public class Snowflake extends Sprite { /* переменные */ private var _snowflake:Sprite; private var _size:int = 100; private var _g:int = 4; private var _n:int = 8; /* функция-конструктор */ public function Snowflake(color:uint = 0xffffff, glow:int = 0x0066ff, scaleObj:Number = 1) { _snowflake = new Sprite ; _snowflake.graphics.lineStyle(1,color,1); draw_snow(0,0,_size,_g,_n); _snowflake.scaleX = _snowflake.scaleY = scaleObj; addChild(_snowflake); _snowflake.filters = [new GlowFilter(glow,1,2,2,2,1,false,false)]; } /* рекурсивная функция, рисующая снежинку */ private function draw_snow(x:int,y:int,r:int,c:int,_n:int) { var a,i,xd,yd:int; if (c>=1) { for (i=0; i<_n; i++) { a = 2 * Math.PI * i / _n; xd = Math.round(x + r * Math.cos(a)); yd = Math.round(y + r * Math.sin(a)); _snowflake.graphics.moveTo(x,y); _snowflake.graphics.lineTo(xd, yd); draw_snow(xd,yd,Math.floor(r / 3), c-1, _n); } } } } }

Сохраняем класс в виде файла Snowflake.as и помещаем в одну папку с нашим флеш-проектом.

Затем переходим к самому флеш-проекту. В нём на главной временной шкале пишем следующее...

Код ActionScript 3.0:

/* импортируем класс */ import Snowflake; /* создаём экземпляр класса */ var snowflake:Snowflake = new Snowflake(); /* добавляем его на сцену */ addChild(snowflake); /* позиционируем на сцене */ snowflake.x = 275; snowflake.y = 200;

Теперь, если мы скомпилируем наш флеш-ролик, то получим примерно следующее:

Загрузить Adobe Flash Player

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

color - цвет лучей снежинки (по умолчанию стоит белый - 0xffffff);

glow - цвет обводки (по умолчанию стоит светло-голубой - 0x0066ff);

scaleObj - данный параметр отвечает за размеры снежинки (по умолчанию данный параметр равен 1).

Для примера нарисуем красную снежинку с белой обводкой и немного уменьшим её в размерах по сравнению с предыдущей...

Код ActionScript 3.0:

import Snowflake; var snowflake:Snowflake = new Snowflake(0xff0000,0xffffff,0.8); addChild(snowflake); snowflake.x = 275; snowflake.y = 200;

Выглядеть это "чудо природы" будет так:

Загрузить Adobe Flash Player

Но мы уже ранее говорили, что нам одной снежинки, скорее всего, будет мало. Поэтому давайте создадим много снежинок и разбросаем их по сцене флеш-ролика...

import Snowflake; /* в цикле создаём множество снежинок разного размера и случайным образом размещаем их по сцене флеш-ролика */ for (var i:uint; i<30; i++) { var snowflake:Snowflake = new Snowflake(0xffffff,0x0066ff,Math.random() * 0.2 + 0.1); addChild(snowflake); snowflake.x = Math.random() * stage.stageWidth; snowflake.y = Math.random() * stage.stageHeight; }

Получится примерно следующее:

Загрузить Adobe Flash Player

Надеюсь, вам понравился данный урок. Исходник под Adobe Flash CS5.5 и сам класс Snowflake скачать можно здесь.

Автор: admin

Дата добавления: 2011-12-21

Просмотров: 3227

Рейтинг поста: +4-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-19
Всё в ваших руках :-)
Комментатор
Комментарий добавил(а): Татьяна
Дата добавления: 2014-12-19
Здравствуйте! Снежинка получилась красивой. Но вот куда ее применить? Спасибо за урок.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2011-12-27
Спасибо :-)
Комментатор
Комментарий добавил(а): Владислав
Дата добавления: 2011-12-27
Красивая снежинка получается)
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика