3D туннель с помощью ActionScript 3.0

Content on this page requires a newer version of Adobe Flash Player.

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

Урок будет довольно прост. :) Просто создайте новый *.fla документ, задайте число кадров в секунду равным 30 и вставьте в первый кадр следующий код:

//Максимальная глубина шариков.
const MAXIMUM_Z:Number = 1500;
 
//Этот массив будет содержать шарики.
var circles:Array = new Array();
 
//Задаем фокусное расстояние.
var focalLength:Number = 500;
 
//Задаем точку схода перспективы в центре сцены.
var vanishingPointX:Number = stage.stageWidth / 2;
var vanishingPointY:Number = stage.stageHeight / 2;
 
//Радиус туннеля.
var radius:Number = 40;
 
//Начальная глубина для первого шарика.
var startingDepth:Number = MAXIMUM_Z;
 
//Начальный угол для шариков.
var startingAngle = 0;
 
//Скорость врашения шариков.
var angleSpeed:Number = 0.07;
 
//Создадим таймер, который срабатывает каждые 0.15 секунд.
var timer:Timer = new Timer(150,0);
timer.addEventListener(TimerEvent.TIMER, createCircle);
timer.start();
 
//Функция создания шарика.
function Ball():MovieClip
{
 var ball:MovieClip = new MovieClip();
 ball.graphics.beginFill( 0xcc0000 );
 ball.graphics.lineStyle( 2, 0x000000 );
 ball.graphics.drawCircle( 0, 0, 20 );
 addChild( ball );
 return ball;
}
 
function createCircle(e:Event):void
{
 
 //Создаем новый шарик.
 var circle:MovieClip = Ball();
 
 //Задаем z-позицию шарика.
 circle.zpos3D = MAXIMUM_Z;
 
 //Сохраняем угол шарика.
 circle.currentAngle = startingAngle;
 
 //Задаем начальную альфа, равную нулю.
 circle.alpha = 0;
 
 //Помешаем шарик на нижнуюю позицию в списке отображения сцены.
 addChildAt(circle, 0);
 
 //Назначаем слушатель ENTER_FRAME для анимации.
 circle.addEventListener(Event.ENTER_FRAME, moveCircle);
}
 
//Эта функция вызывается каждый кадр.
function moveCircle(e:Event):void
{
 
 //Помещаем шарик в локальную переменную.
 var circle:MovieClip = (MovieClip)(e.target);
 
 //Уменьшаем глубину шарика. Приближаем шарик.
 circle.zpos3D -=  5;
 
 //Если zpos3D <=-focalLength, то удаляем шарик.
 if (circle.zpos3D <=  -  focalLength)
 {
 
 //Удаляем слушатель.
 circle.removeEventListener(Event.ENTER_FRAME, moveCircle);
 
 //Удаляем шарик из сцены.
 removeChild(circle);
 }
 
 //Обновляем текущий угол.
 circle.currentAngle +=  angleSpeed;
 
 //Расчитываем новыю 3D x позицию.
 circle.xpos3D = Math.cos(circle.currentAngle) * radius;
 
 //Расчитываем новую 3D y позицию.
 circle.ypos3D = Math.sin(circle.currentAngle) * radius;
 
 //Расчитываем размер шарика.
 var scaleRatio = focalLength/(focalLength + circle.zpos3D);
 
 //Задаем размер шарика.
 circle.scaleX = circle.scaleY = scaleRatio;
 
 //Увеличиваем прозрачность.
 if (circle.alpha < 1)
 {
 circle.alpha +=  0.01;
 }
 //Размещаем шарик в сцене. (Переводим 3Д координаты в 2Д)
 circle.x = vanishingPointX + circle.xpos3D * scaleRatio;
 circle.y = vanishingPointY + circle.ypos3D * scaleRatio;
}

Готово! :)

Исходник: 

Впервые!

Если у вас было хоть раз желание сделать что-то новое и необычное, то этот видеокурс для вас! Знания ActionScript 3.0 вдохнут в ваши проекты новую жизнь, позволив тем самым поднять их на новый уровень

С помощью этого видеокурса вы пройдёте путь от новичка до Объектно-Ориентированного Программирования, сможете работать со многими популярными библиотеками и научитесь создавать сайты во flash! + Видеокурс по PaperVision3D в подарок!

Видеокурс содержит 119 видеоуроков в 12 главах. На сегодняшний день это единственный видеокурс, таких масштабов

Узнайте о других возможностях ActionScript 3.0

Похожие записи

Комментарии

Аватар пользователя Gridysgood

круто

yahoo

Аватар пользователя Fly

Удалил комменты я, потому что я админ и эти уроки тут по моему заданию :)

1) Админ всегда прав
2) Если админ не прав, смотри пункт 1

Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум

Аватар пользователя Neirol

ne_huligan

 

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />