当前位置

网站首页> 电脑教程 > 网页设计 > Flash教程 > 浏览文章

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

作者:小梦 来源: 网络 时间: 2024-08-12 阅读:

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

热点阅读

网友最爱