Опубликовано 24 октября, 2010 - 12:10 пользователем ProcXel.A
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
Похожие записи
Комментарии
круто
Удалил комменты я, потому что я админ и эти уроки тут по моему заданию :)
1) Админ всегда прав
2) Если админ не прав, смотри пункт 1
Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />