Как создавать свои Flash-игры, подобные Angry Birds и World of Goo?
Box2D - это библиотека, которая моделирует физическое поведение твердых тел в двумерном пространстве. Программисты могут использовать ее в своих играх, чтобы сделать...
В этом уроке мы будем учиться делать 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 главах. На сегодняшний день это единственный видеокурс, таких масштабов
Комментарии
круто
Удалил комменты я, потому что я админ и эти уроки тут по моему заданию :)
1) Админ всегда прав
2) Если админ не прав, смотри пункт 1
Мы в контакте -
#3 Опубликовано 28 октября, 2010 - 13:29 пользователем Neirol
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />