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

时间:2022-10-06 14:07:55 动画设计 我要投稿
  • 相关推荐

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

  本教程着重于代码的编写,版本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 文档保存在同一目录下,进行测试。

【制作3D旋转动画效果Flash教程】相关文章:

flash怎么制作慢慢绽放的玫瑰花的动画效果04-13

flash动画制作的发展前景12-27

3D效果图的制作要求和注意问题08-25

3d效果图一般制作步骤07-19

Flash动画设计的入门知识10-17

传统动画设计与Flash动画设计的区别09-05

Flash动画技巧:动画中人物走路动作的规律12-07

PS打造深秋效果的教程03-07

3D医学动画的操作流程05-30

动画的制作流程10-13