|
Примеры скриптов на Action Script 3 |
|
Вернуться в примеры скриптов
3D вращение изображения.
Flash-анимация, изначально ориентированная на 2D, плохо подходит для 3D-работ, однако правдоподобная анимация очень часто требует
3D-вращения. В скрипте, представленном ниже приводится пример для врещения вокруг центральной оси Y, загруженного
изображения. Заменяя или комбинируя свойство rotationY, на rotationX и rotationZ можно добиться вращения относительно
других осей или воспроизвести довольно сложное движение.
Вращение изображения вокруг оси Y
package rotate
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.Timer;
public class RotateImage extends Sprite
{
// Загрузчик изображения
private var loader:Loader;
// Таймер вращения
private var rotateTimer:Timer;
// Угол вращения
private var angle:int;
// Конструктор
public function RotateImage():void
{
// Вызываем конструктор базового класса
super();
// Устанавливаем угол
this.angle = 0;
// Создаем загрузчик
this.loader = new Loader();
// Назначаем обработчик события окончания
// загрузки изображения
this.loader.contentLoaderInfo.addEventListener(Event.INIT, imageCompleteHandler);
// Загружаем изображение
this.loader.load(new URLRequest("test.jpg"));
// Обработчик вращения
this.rotateTimer = new Timer(100);
this.rotateTimer.addEventListener(TimerEvent.TIMER, rotateTimerHandler);
}
// Обработчик события окончания загрузки изображения
private function imageCompleteHandler(evt:Event):void
{
// Размещаем изображение на флешке
this.addChild(this.loader);
// Отступ от левого края
this.loader.x = 200;
// Отступ сверху
this.loader.y = 50;
// Смещаем точку поворота в центр
this.loader.content.x = -this.loader.content.width / 2;
// Запускаем таймер вращения
this.rotateTimer.start();
}
// Обработчик таймера вращения
private function rotateTimerHandler(evt:TimerEvent):void
{
// Один угол за один такт
this.angle += 1;
// Обнуляем значение угла, при достижении полного поворота
if(this.angle > 359) this.angle = 0;
// Вращаем изображение
this.loader.rotationY = this.angle;
}
}
}
Как видно пример помещен в пакет rotate, т.е. приложение должно быть размещено в папке rotate, а связь с флешкой осуществляется через rotate.RotateImage
Если работа ActionScript приложений не понятна, или вызывает вопросы, их можно задать на форуме Flash.
|