• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 范文大全 > 正文

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

    时间:2018-08-10来源:山茶花美文网 本文已影响 山茶花美文网手机站

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

    • [Flash教程:制作3D旋转动画效果] flash3d旋转动画 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全