Термин ветряная электростанция относится к группе ветряных турбин в одном месте, используемых для производства электроэнергии. По сравнению с воздействием традиционных источников энергии на окружающую среду, влияние энергии ветра относительно невелико. В отличие от источников энергии из ископаемого топлива, энергия ветра не потребляет топлива и не загрязняет воздух.
В этом руководстве вы узнаете, как создать виртуальную ветряную ферму с помощью ActionScript 3.0.
Этот пост является частью Blog Action Day 2009 , всемирной инициативы, созданной основателями Envato Коллисом и Сайаном Таидом, которой в настоящее время управляет Change.org . Блог Action Day существует для того, чтобы перевести разговор в Интернете на один день , объединив тысячи блогеров вокруг одной важной проблемы — в этом году — Изменение климата. Еще не поздно зарегистрировать свой блог и принять участие.
Шаг 1: Краткий обзор
Мы собираемся получить возвращенное значение свойства activityLevel класса Microphone, а затем передать его свойству вращения ранее созданного Turbine MovieClip.
Это приведет к тому, что наши ветряные турбины будут вращаться относительно уровня звука, воспринимаемого микрофоном. Пользователи буквально смогут дуть на свои экраны и наблюдать за вращением турбины!
Шаг 2. Создайте новый файл Flash
Откройте Flash и создайте новый файл Flash (ActionScript 3).

Установите размер сцены 600×300 и частоту кадров 24 кадра в секунду.

Шаг 3: Фон
Мы создадим простую векторную иллюстрацию, которая будет содержать нашу ветропарк.
Выберите Rectangle Tool (R) и создайте синий прямоугольный градиент (# 81CCFE, # D0EAFB) прямоугольника размера сцены.

Используйте Gradient Transform Tool (F), чтобы вращать градиент, оставляя ваш фон таким:

Это будет наше небо.
Шаг 4: Трава
Теперь давайте добавим немного травы, на которой мы можем разместить наши ветряные турбины.
Снова выберите инструмент «Прямоугольник» и создайте прямоугольник зеленого линейного градиента размером 600×30 пикселей (# 9AB937, # AFC232, # 9AB937) и выровняйте его по нижней части сцены.

Используйте инструмент «Выделение» (V), чтобы взять верхний край прямоугольника (вы заметите, что курсор меняется на стрелку с небольшой кривой внизу), и перетащите его, чтобы сделать небольшую кривую влево; посмотрите на следующее изображение для справки.

Шаг 5: Ветровая турбина
Используйте инструмент «Прямоугольник», чтобы нарисовать прямоугольник # F7F7F7, 10×153 px, и используйте инструмент «Выделение», чтобы перетащить верхние края, делая его тоньше. Это будет основание турбины.

Чтобы создать лезвия, нарисуйте прямоугольник размером 1×90 пикселей, затем используйте инструмент «Выделение», чтобы перетащить стороны и создать полуовал. Вы можете увидеть это лучше на следующем изображении.

Дублируйте лезвие (Cmd + D) и используйте Transform Tool, чтобы вращать его. Повторите этот шаг, чтобы сделать в общей сложности 3 лезвия.

Выберите инструмент Oval Tool, создайте круг размером 20×20 пикселей и поместите его в центр турбин.

Добавьте немного тени, продублировав ветротурбину и изменив ее цвет на # D0D0D0. Затем перейдите к Modify> Arrange> Send backward и переместите выделение на 1 пиксель вправо.

Шаг 6: Ферма
Преобразуйте лезвия в мувиклип и установите его имя экземпляра как «турбина». Снова используйте меню Arrange, чтобы вывести средний круг вперед.
Дублируйте ветряную турбину столько раз, сколько захотите, просто не забудьте изменить имя экземпляра в зависимости от количества турбин.

Шаг 7: Информация
Мы собираемся добавить некоторую информацию о ветровых турбинах, а также название дня действий в блоге.
Выберите Text Tool (T) и создайте новый статический TextField. Добавьте заголовок и информацию и используйте следующий фильтр.

ОК, графическая часть закончена. Это должно выглядеть так:

Шаг 8: ActionScript
Создайте новый файл ActionScript (Cmd + N) и сохраните его как «Main.as».

Это будет класс, который будет обрабатывать приложение.
Шаг 9: Обязательные классы
Это те классы, которые нам понадобятся. Подробное описание каждого класса см. В справке по Flash (F1).
|
01
02
03
04
05
06
07
08
09
10
|
package
{
import flash.display.Sprite;
import flash.media.Microphone;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;
import fl.transitions.TweenEvent;
import flash.events.Event;
import flash.events.ActivityEvent;
import flash.system.Security;
|
Шаг 10: Объявление и расширение класса
Ключевое слово extends определяет класс, который является подклассом другого класса. Подкласс наследует все методы, свойства и функции, так что мы можем использовать их в нашем классе.
|
1
2
|
public class WindFarm extends Sprite
{
|
Шаг 11: переменные
Мы будем использовать только три переменные в этом классе, две объявлены в следующем блоке кода и еще одну для Tween, объявленного в функции вращения.
|
1
2
|
private var started:Boolean;
private var mic:Microphone = Microphone.getMicrophone();
|
Шаг 12: функция конструктора
Конструктор — это функция, которая запускается, когда объект создается из класса. Этот код выполняется первым, когда вы создаете экземпляр объекта или запускаете с использованием класса документа.
|
01
02
03
04
05
06
07
08
09
10
11
|
public function WindFarm():void
{
Security.showSettings(«2»);
mic.setLoopBack(true);
if (mic != null) //If the mic was enabled…
{
mic.setUseEchoSuppression(true);
mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler);//Calls the activityHandler function every time the microphone detects sound
}
}
|
Шаг 13: Обработчик активности
Этот код добавляет слушателя для выполнения функции вращения, которая будет обрабатывать движение турбин.
|
1
2
3
4
|
private function activityHandler(event:ActivityEvent):void
{
stage.addEventListener(Event.ENTER_FRAME, rotateTurbines);
}
|
Шаг 14: Вращение турбин
Эта функция управляет вращением турбин.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
private function rotateTurbines(e:Event):void
{
/* If the activity level received by the microphone is between 11 and 19, and the turbines are already spinning,
a «slow down» tween is executed*/
if (mic.activityLevel < 20 && mic.activityLevel > 10 && started)
{
var tween;
tween = new Tween(turbine,»rotation»,Strong.easeOut,turbine.rotation,turbine.rotation + 720,3,true);
tween = new Tween(turbine2,»rotation»,Strong.easeOut,turbine.rotation,turbine.rotation + 720,3,true);
tween = new Tween(turbine3,»rotation»,Strong.easeOut,turbine.rotation,turbine.rotation + 720,3,true);
tween = new Tween(turbine4,»rotation»,Strong.easeOut,turbine.rotation,turbine.rotation + 720,3,true);
tween.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinish);//Calls a function when the turbines stop
}
else if (mic.activityLevel > 20)// If the activity level is higher than 20, the sound is enough to move the turbines
{
started = true;
turbine.rotation += mic.activityLevel;
turbine2.rotation += mic.activityLevel;
turbine3.rotation += mic.activityLevel;
turbine4.rotation += mic.activityLevel;
}
}
|
Шаг 15: движение завершено
Этот код выполняется, когда анимация замедления завершена.
|
1
2
3
4
|
private function onMotionFinish(e:TweenEvent):void
{
started = false;//Turbines are not moving
}
|
Шаг 16: Класс документа
Вернитесь к файлу .Fla и в панели свойств добавьте «Main» в поле Class, чтобы сделать этот класс документа.
Вывод
Теперь вы знаете, как получить, измерить и реализовать активность микрофона, плюс вы немного узнали о ветровых электростанциях и о том, как они помогают сохранить планету.
Будьте зеленым и спасибо за чтение!

