Пример скрипта :   

Код:
<OBJECT CLASSID='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' WIDTH=400 HEIGHT=300><param name='wmode' value='transparent'><PARAM NAME=MOVIE VALUE=http://kedicik.ucoz.ru/les3/tunnel.swf><PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><param name='allowscriptaccess' value='never'><EMBED SRC=http://kedicik.ucoz.ru/les3/tunnel.swf allowscriptaccess='never' WIDTH=400 HEIGHT=300 PLAY=TRUE LOOP=TRUE QUALITY=HIGH wmode=transparent></EMBED></OBJECT>

Настройка окружения

1. Создайте новый документ Flash размером 400×300.

2. Нарисуйте круг размером 30×30. Я использовал #ff8800 для цвета обводки и #ffffff для цвета заливки.

3. Конвертируйте круг в муви клип. Назовите его “MyCircle” и установите точку регистрации в центре. Сейчас вы должны увидеть подобно этому.

http://demiart.ru/forum/uploads3/post-60948-1237071124.gif

4. Свяжите муви клип с классом по имени “MyCircle“.

5. Удалите мувик- круг со сцены. Мы создадим и расположим все круги средствами Actionscript 3.

Идем в Actionscript 3

6. Создайте новый слой для actionscript и напишите следующее.
CODE

//Максимальная глубина для кругов
const MAXIMUM_Z:Number = 1500;

//Создаем массив , который будет содержать все круги
var circles:Array = new Array();

//Focallength определяет, насколько видна перспектива (вы можете поиграть с
//этим значением, чтобы увидеть эффект самим).
var focalLength:Number = 300;

//Точка исчезновения - это точка, где сходятся объекты.
//Итак когда объект действительно далеко, его координаты
//почти равны точке исчезновения.
var vanishingPointX:Number = stage.stageWidth / 2;
var vanishingPointY:Number = stage.stageHeight / 2;

//Радиус туннеля
var radius:Number = 120;

//Начальная глубина для первого круга
var startingDepth:Number = MAXIMUM_Z;

//Начальный угол для кругов
var startingAngle = 0;

//Установим угловую скорость
var angleSpeed:Number = 0.05;

//Создадим таймер, который вызывается каждые 0.15 секунд
var timer:Timer = new Timer(150,0);
timer.addEventListener(TimerEvent.TIMER, createCircle);
timer.start();

function createCircle(e:Event):void {

//Создаем новый круг
var circle:MyCircle = new MyCircle();

//Присвоим значение z для круга
circle.zpos3D = MAXIMUM_Z;

//Сохраним угол для этого круга
circle.currentAngle = startingAngle;

//Установим вначале альфа в 0
circle.alpha = 0;

//Добавим круг на сцену вниз display списка
addChildAt(circle, 0);

//Добавим ENTER_FRAME для анимации круга
circle.addEventListener(Event.ENTER_FRAME, moveCircle);
}

//Эта функция вызывается в каждом фрейме
function moveCircle(e:Event):void {

//Присвоим круг локальной переменной
var circle:MyCircle = (MyCircle)(e.target);

//Уменьшим глубину круга (перенесем круг ближе);
circle.zpos3D -= 5;

//Если zpos3D <= -focalLength, мы придем к отрицательному scaleRatio (или мы делим на 0).
//В этой точке мы знаем, что объект уже прошел через нас.
//Поэтому мы удаляем круг.
if (circle.zpos3D<=- focalLength) {

//Удалим слушатель для ENTER_FRAME  (это функция)
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;

//Увеличиваем альфа
circle.alpha+=0.01;

//Положение круга на сцене (из 3D в 2D координаты)
circle.x=vanishingPointX+circle.xpos3D*scaleRatio;
circle.y=vanishingPointY+circle.ypos3D*scaleRatio;
}

7. Это все, протестируйте ваш мувик