Попробуем создать зловещую Медузу Горгону. Настоящими змеями её вооружать не будем, но хоть что-то подобное на ее голову нацепляем.
1. Сначала создаем файлы gorgona.fla (ActionScript 3.0) и Snake.as. Примерные параметры для gorgona.fla - на рисунке.
2. В файле класса Snake.as помещаем следующий код:
Code
package {
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Snake extends Sprite {
var myTimer:Timer=new Timer(30);//этот таймер отвечает за движение "змей"
var startPointX:Number=0;
var startPointY:Number=0;
var middlePointX:Number;
var middlePointY:Number;
var endPointX:Number;
var endPointY:Number;
var randomizer:Number=Math.random();//два "рэндомайзера" позволяют разнообразить движение отдельных "змей"
var randomizer2:Number=360*Math.random();
var container:Sprite = new Sprite();//контейнер для помещения "змей"
var param:Number=0;//параметр, отвечающий за движение "змей"
public function Snake() {
addChild(container);
myTimer.start();
myTimer.addEventListener(TimerEvent.TIMER, makeCurve);//таймер запускает функцию makeCurve
}
private function makeCurve(e:TimerEvent):void {//функция, которая создает "змеи"
var curve:Sprite = new Sprite();//каждая "змея" представляет собой кривую Безье
curve.graphics.lineStyle(2, 0xFFFF00, .75);//стиль кривой (толщина линии, цвет, прозрачность)
curve.graphics.moveTo(startPointX, startPointY);//перемещаемся в начальную точку кривой Безье
middlePointX=(1+randomizer)*50*Math.sin((param+randomizer)*Math.PI/180);//вычисляются координаты средней точки
middlePointY=50+50*Math.cos(param*randomizer*Math.PI/180);
endPointX=(1+randomizer)*50*Math.cos(randomizer*(param+randomizer2)*2*Math.PI/180);//вычисляются координаты конечной точки
endPointY=100+(1+randomizer)*25*Math.sin(randomizer*(param+randomizer2)*2*Math.PI/180);
curve.graphics.curveTo(middlePointX, middlePointY, endPointX, endPointY);//здесь рисуется кривая
if (container.numChildren>0) {//если контейнер не пуст,...
container.removeChildAt(0);//...то из него удаляется предыдущая кривая...
}
container.addChild(curve);//...и помещается новая
param+=1;
}
}
}
3. В файле gorgona.fla в первом кадре помещаем такой код:
Code
import flash.display.Stage;
for (var angle:uint=0; angle<360; angle+=10) {//змеи-лучи будут помещаться по кругу, с интервалом в 10 градусов
var snake_inst:Snake = new Snake();//создается экземпляр "змеи"
snake_inst.x=stage.stageWidth/2+60*Math.cos((angle+90)*Math.PI/180);//координаты "змеи"
snake_inst.y=stage.stageHeight/2+60*Math.sin((angle+90)*Math.PI/180);
snake_inst.rotation=angle;//поворот "змеи"
var glow:GlowFilter = new GlowFilter();//для эффектности применяем к "змеям" фильтр
glow.color=0xFFFF00;
glow.alpha=1;
glow.blurX=glow.blurY=6;
glow.quality=BitmapFilterQuality.MEDIUM;
snake_inst.filters=[glow];
addChild(snake_inst);
}
4. На этом можна проверить и остановиться. Но я еще поместил по центру картинку головы Медузы Горгоны, стащенную в интернете.
Для этого можно поступить так:
Подходящий файл импортировать на сцену файла gorgona.fla, преобразовать в символ типа movie clip, точка регистрации по центру, имя - Head, поставить "птичку" на Linkage - Export for ActionScript и Export in first frame. Имя класса - Head. Удалить символ со сцены.
Дальше во втором куске кода после "import flash.display.Stage;" вставляем примерно такое:
Code
var head_inst:Head = new Head();
addChild(head_inst);
head_inst.x=stage.stageWidth/2;
head_inst.y=stage.stageHeight/2;
5. Если же голова Горгоны вам не нужна, можете попробовать вместо строчек
Code
snake_inst.x=stage.stageWidth/2+60*Math.cos((angle+90)*Math.PI/180);//координаты "змеи"
snake_inst.y=stage.stageHeight/2+60*Math.sin((angle+90)*Math.PI/180);
второго куска кода, вставить такие:
Code
snake_inst.x=stage.stageWidth/2+6*Math.cos((angle+90)*Math.PI/180);//координаты "змеи"
snake_inst.y=stage.stageHeight/2+6*Math.sin((angle+90)*Math.PI/180);
Может так будет симпатичнее.
6. Тестируем.
Исходник