制作3D旋转动画效果Flash教程
- 动画设计
- 关注:2.66W次
本教程着重于代码的编写,版本AS 3.0。只要制作一个旋转的3D球,图形元件的制作不作讲解,请参看有关教程。
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文档与 文档保存在同一目录下,进行测试。
- 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/sjzz/donghua/90g46j.html