荟萃馆

位置:首页 > 设计 > 动画设计

制作3D旋转动画效果Flash教程

本教程着重于代码的编写,版本AS 3.0。只要制作一个旋转的3D球,图形元件的制作不作讲解,请参看有关教程。

制作3D旋转动画效果Flash教程

include ""

//图片容器

var menu:Sprite=new Sprite();

//使图标移动

menu.x = 300;

menu.y = 200;

//注册事件侦听器

ventListener(R_FRAME,moveMenu);

hild(menu);

//椭圆在x 和y 轴上的.截距

var disx:Number = 200;

var disy:Number = 10;

//旋转速度

var speed:Number = 0;

initMenu(5);

function initMenu(n:int) {

for (var i:int; i

var mc:MovieClip = new IconMenu();

//缩小图标

eX = eY = .5;

hild(mc);

}

}

//事件侦听器函数

function moveMenu(e:Event):void {

//获取图标数

var iconCount:int = hildren;

//定义数组

var depthArray:Array = new Array();

//把360度平分

var angle:Number = 360 / iconCount;

for (var z:int; z

//根据深度获取图标

var mc:MovieClip = hildAt(z);

//跳转到不同帧,来显示不同的图标

AndStop(z+1);

//设置图标的位置

mc.x = cosD(speed + angle*z) * disx;

mc.y = sinD(speed + angle*z) * disy;

setProp(mc,"alpha");

setProp(mc,"scaleX",.2,.7);

setProp(mc,"scaleY",.2,.7);

//保存图标到数组

depthArray[z] = mc;

}

//重新设置图标的深度

arrange(depthArray);

speed += 2;

}

function arrange(depthArray:Array):void {

//按照y坐标排序

On("y", RIC);

var i:int = th;

while (i--) {

hildIndex(depthArray[i], i);

}

}

function setProp(mc:MovieClip,prop:String,n1:Number = .5, n2:Number = 1):void {

mc[prop] = ((mc.y + 2 * disy) / disy - 1) / 2 * (n2 - n1) + n1;

}

5、新建文档,保存名为: (这个文档是进行三角函数的计算)

//角度转弧度

function angleToRadian(angle:Number):Number

{

return angle*();

}

//弧度转角度

function radianToAngle(radian:Number):Number

{

return radian*(180/);

}

//计算正弦值

function sinD(angle:Number):Number

{

return (angleToRadian(angle));

}

//计算余弦值

function cosD(angle:Number):Number

{

return (angleToRadian(angle));

}

//计算反正切

function atan2D(y:Number, x:Number):Number

{

return radianToAngle(2(y, x));

}

把fla文档与 文档保存在同一目录下,进行测试。

标签:3D Flash 动画