Главная | Форум | Реклама | Shop Flash-JePo | Картинки | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Flash мир » Flash уроки » Медуза Горгона (Кривые Безье через AS 3.0)
Медуза Горгона
JeepersДата: Вторник, 13.09.2011, 14:19 | Сообщение # 1




Администратор портала







Главный Админ
Сталин
Группа: Администраторы
Сообщений: 937
Награды: 0
Репутация: 13

Попробуем создать зловещую Медузу Горгону. Настоящими змеями её вооружать не будем, но хоть что-то подобное на ее голову нацепляем.



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. Тестируем.

Исходник


Требуются: Модераторы, Журналист новостей, Дизайнер!
Shop Flash-JePo
 
Реклама
ksivaДата: Вторник, 13.09.2011, 14:23 | Сообщение # 2












Рядовой
Группа: Пользователи
Сообщений: 29
Награды: 1
Репутация: 3

Отличный урок! спс!
 
Реклама
Форум » Flash мир » Flash уроки » Медуза Горгона (Кривые Безье через AS 3.0)
  • Страница 1 из 1
  • 1
Поиск: