Для тех, кто вообще не в курсе, заявляю, что это не вымогательство и не способ нажиться на милосердии. Имена, стоящие за ссылкой, более чем достойные и авторитетные.
Кросспостов много не бывает. Человеческая жизнь – одна.
Старый, но приятный трюк: анимация изометрического изображения.
Такая штуковина очень проста в изготовлении.
Надо только сообразить, что мувиклипы с двойным дном таят в себе скрытые возможности ))
Если к примеру клип, который вращается вокруг своей оси, поместить в клип, который сжат по вертикали (_yscale = 75) то мы получим имитацию вращения изометрического изображения.
А если несколько изображений положить друг на другом как блины – получится объемное изометрическое изображение которое можно крутить, как душе угодно )
Самое забавное в этом методе – это моделирование модели.
Делается это на таймлайне. 1 кадр – это дно, последний кадр – вершина нашей блинной скульптуры.
Вот, к примеру – как выглядит клип из которого нарезается приведенная выше анимация:
Алгоритм построения прост:
Создать общий контейнер для всей фигуры;
Создать в нем N пустых контейнеров(N=_totalframes клипа, составляющего фигуру) с _yscale = 75 (варируется) ;
В пустой контейнер N аттачится клип-фигура и останавливается на кадре N+1;
А вот собственно совершенно простой код:
// на сцену нужно в нужном месте положить клип под именем holdervar distance:Number = 1; // дистанция между "кусками"var speed:Number = 5; // скорость вращенияvar scaleFactor:Number = 75; // масштабирование по Yvar slices:Number; // количество кусков (определим позже)// функция, создает контейнер для куска, и вставляет в него// клип-фигуру с установкой нужного кадра.// n = порядковый номер кускаfunction attachSlice(n:Number):Void{varslice:MovieClip = holder.createEmptyMovieClip("slice"+n,n);
// в библиотеке символ, из которого делим фигуру снабдить linkage=sculptureslice.attachMovie("sculpture","gfx",0);
slice.gfx.gotoAndStop(n+1);
slice._yscale = scaleFactor;
slice._y = -n*distance;
}// В начале, создадим первый кусок (дно) и заодно узнаем,// сколько в нем кадров, чтобы установить значение slices
attachSlice(0);
slices = holder.slice0.gfx._totalframes;
// выкладываем все остальные кускиfor(var i=1; i < slices; i++){
attachSlice(i);
}// вращение фигуры// (тут можно определить и другое поведение - вращение от клавиатуры, мыши и т.д.)
holder.onEnterFrame = function():Void{for(var i=0; i < slices; i++){this["slice"+i].gfx._rotation += speed;
}}