当前位置:才华君>社会工作>电脑培训>

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

电脑培训 阅读(1.26W)

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

include "Math2.as"

//图片容器

var menu:Sprite=new Sprite();

//使图标移动

menu.x = 300;

menu.y = 200;

//注册事件侦听器

menu.addEventListener(Event.ENTER_FRAME,moveMenu);

this.addChild(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();

//缩小图标

mc.scaleX = mc.scaleY = .5;

menu.addChild(mc);

}

}

//事件侦听器函数

function moveMenu(e:Event):void {

//获取图标数

var iconCount:int = menu.numChildren;

//定义数组

var depthArray:Array = new Array();

//把360度平分

var angle:Number = 360 / iconCount;

for (var z:int; z

//根据深度获取图标

var mc:MovieClip = menu.getChildAt(z);

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

mc.gotoAndStop(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坐标排序

depthArray.sortOn("y", Array.NUMERIC);

var i:int = depthArray.length;

while (i--) {

menu.setChildIndex(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、新建.as文档,保存名为:Math2.as (这个文档是进行三角函数的计算)

//角度转弧度

function angleToRadian(angle:Number):Number

{

return angle*(Math.PI/180);

}

//弧度转角度

function radianToAngle(radian:Number):Number

{

return radian*(180/Math.PI);

}

//计算正弦值

function sinD(angle:Number):Number

{

return Math.sin(angleToRadian(angle));

}

//计算余弦值

function cosD(angle:Number):Number

{

return Math.cos(angleToRadian(angle));

}

//计算反正切

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

{

return radianToAngle(Math.atan2(y, x));

}

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