!. Создайте новый документ с нужными размерами (у меня 700 на 500), с частотой кадров =25. Напишите основной класс Main и сохраните его в папке под названием, например, Снегопад (файл - сохранить как...)
2. Нарисуйте несколько снежинок в программе или импортируйте их в библиотеку (я нарисавала 4 снежинки в фотошопе, применила тиснение и глянец). Перетащите их по очереди на сцену, выделите, измените размер (если нужно), выровняйте по центру
и преобразуйте её в символ (это можно сделать так: а) нажать F8; б) Модификация - Преобразовать в символ; в) нажать правой клавишей на снежинку и в открывшемся окне нажать на Преобразовать в символ) с именем flake0, поставьте галочку в Экспорт для ActionScript
Появится окно, нажмите ок
Удалите символ со сцены. Так проделайте со всеми снежинками и присвойте flake1; flake2; flake3 и т.д. столько сколько будет у вас снежинок и не забудьте ставить галочки в Экспорт для ActionScript.
3. Создайте объект к которому будет прилипать снег, это может быть что угодно (автор взял текст), превратите его в символ (клип) с точкой регистрации в верхнем левом углу, дайте имя headTxt и поставьте галочку в Экспорт для ActionScript (как в снежинках), после чего удалите символ со сцены (если возьмёте текст, то не забудьте поставить динамический и внедрить шрифт).
4. Перетащите на сцену картинку (или нарисуйте как в уроке что-нибудь где будет идти снег. Я взяла гогтовую картинку), превратите его в символ с точкой регистрации в левом верхнем углу, с именем и классом content (как снежинки и текст).
5. Создайте и сохраните в папке с проектом (Снегопад) 2 пустых as. файла, один назовите Main.as (это главный класс) и Flake.as (класс снежинок). Файл - Создать
6. Вставить в Flake.as код (описание кода почитайте в уроке):
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
//Импортируем нужные пакеты
public class Flake extends Sprite {
//Объявление класса
private var sn:MovieClip;
//Ссылка на клип снежинки
private var ymax:Number;
//Высота документа
private var x0:Number;
//Стартовая х-координата снежинки
private var speed:Number;
//Скорость движения (величина задержки таймера)
private var angle:Number;
//Угол. Его проецируем на траекторию движения
private var scale:Number;
//Массштаб снежинки
private var tim:Timer;
//Таймер
private var targ:MovieClip;
//Ссылка на объект, к которому снежинка прилипает
private var movingFlag:int;
//Разрешение/Запрет движения
private var stopDelay:Number
//Продолжительность прилипания снежинки
//Конструктор. Аргументом является клип снежинки
public function Flake(arg:MovieClip):void {
//Запомним и кэшируем аргумент
sn=arg;
sn.cacheAsBitmap=true;
//Дефолтные установки для переназначаемых переменных
speed=100;
angle=0;
scale=1;
movingFlag=1;
//Снежинку – в дисплей список.
addChild(sn);
//Создание таймера
tim=new Timer(speed);
//События.
// Экземпляр класса добавлен на сцену
addEventListener(Event.ADDED_TO_STAGE, init);
//Отработал очередной интервал таймера
tim.addEventListener(TimerEvent.TIMER, moving);
}
//Эти методы (сеттеры) позволяют установить нужные свойства класса извне.
// Установка новой задержки таймера (скорости движения)
public function set _speed(arg:Number):void {
speed=arg;
tim.delay=speed;
stopDelay=speed;
}
//Угол
public function set _angle(arg:Number):void {
angle=arg;
}
//Массштаб
public function set _scale(arg:Number):void {
scale=arg;
this.scaleX=this.scaleY=scale;
}
// Целевой объект прилипания
public function set _target(arg:MovieClip){
targ=arg;
}
//Слушатели событий
/*Эта функция вызовется единожды, когда экземпляр класса будет добавлен на сцену.
Здесь выясним высоту документа, начальную х-координату и, запустив таймер, начнем движение.*/
private function init(e:Event) {
ymax=stage.stageHeight;
x0=this.x;
tim.start();
}
/* Функция перемещения снежинки. Вызывается с каждым интервалом таймера
Двигаем снежинку, следим за пересечением с целевым объектом, прилипаем и отлипаем*/
private function moving(e:TimerEvent) {
/*Ось у. Если снежинка опустилась за пределы документа, переставим ее вверх, иначе опускаем с постоянной скоростью. Когда movingFlag=0, движение остановится*/
this.y>ymax?this.y=-10:this.y+=2*movingFlag;
/*Ось х. Вычисляем приращение, основанное на синусе угла, прибавляем его к стартовой координате и перемещаем объект по горизонтали*/
this.x=x0+Math.sin(angle/180*Math.PI)*80;
//Циклично меняем значение угла
angle+=scale*2*movingFlag;
angle%=360;
/*Если задан целевой объект, то проверим пересечение с ним.
Если пересечение есть, то остановим движение*/
targ==null?null:targ.hitTestPoint(this.x, this.y, true)?movingFlag=0:movingFlag=1;
/*Если движение остановлено, уменьшаем счетчик паузы. Когда счетчик обнулится,
возобновим движение, а счетчик обновим */
!movingFlag?stopDelay?stopDelay--:movingFlag=1:stopDelay=speed;
}
}
}
7. Файл - Сохранить как..
.
Класс Flake.as готов. Чтобы проверить его, в файле Main.as, вставьте этот код: package{ import flash.display.*; public class Main extends Sprite{ public function Main():void{ var sn:Flake=new Flake(new flake0()); sn.x=200; sn.y=10; addChild(sn) } } } Протестируйте ролик. Если вы увидите одинокую снежинку, падающую по синусоиде, то вы всё сделали правильно, можно продолжать дальше, а этот код из Main.as удалить .
8. Вставляем код в главный класс документа Main.as (как, что и для чего почитайте в уроке). Взять его можно отсюда Вложение
10. Файл - Сохранить как...
Протестируйте ролик. Сохраните в fla (файл - сохранить как...) и в swf (файл - экспорт - экспортировать ролик). Вот и всё.