Topic: AS3文档类:球面移动

球面移动:
/UploadTeach/201011/20101102155836854.swf

文档类:

package 

{

        import flash.display.Sprite;

        import flash.events.Event;

        

        [SWF(width=465, height=465, frameRate=30, backgroundColor=0xEAEFF2)] 

        public class Sphere extends Sprite

        {

                private const N:int = 100;



                public function Sphere()

                {

                        var i:int = 0;

                        var list:Array = [];

                        for (i = 0; i < N; i++)

                        {

                                var d:Dot = addChild(new Dot(i)) as Dot;

                                list.push(d);

                        }



                        addEventListener(Event.ENTER_FRAME,upup);



                        function upup(e:Event):void

                        {

                                for (i = 0; i < N; i++)

                                {

                                        list[i].loop();

                                }

                        }

                }

        }

}


Dot类:



package 

{

        import flash.display.Shape;

        import flash.display.Sprite;

        import flash.events.Event;



        public class Dot extends Sprite

        {

                private var _x:Number = 0;

                private var _y:Number = 0;

                private var _z:Number = 0;



                private var _r:uint = 1;



                private var _xyAngle:Number = 0;

                private var _xzAngle:Number = 0;

                private var _xyAdd:Number;

                private var _xzAdd:Number;



                private var _rad:uint = 100;

                private var _dot:Shape;



                private var _num:int;



                public function Dot(setNum:int)

                {

                        _num = setNum;

                        _xyAngle = setNum * 6 - 90;

                        _xzAngle = setNum * 10;



                        this.x = 238;

                        this.y = 238;



                        _xyAdd = 0.7;

                        _xzAdd = 1.11;



                        init();

                }



                private function init():void

                {

                        _dot = addChild(new Shape  ) as Shape;

                        with (_dot.graphics)

                        {

                                //EAEFF2

                                beginFill(uint(0xff * _num / 100) * 0x0101);

                                drawCircle(0,0,3);

                                endFill();

                        }

                }



                public function loop():void

                {

                        _xyAngle +=  _xyAdd;

                        _xzAngle +=  _xzAdd;

                        if (_xyAngle > 360)

                        {

                                _xyAngle -= 360;

                        }

                        if (_xzAngle > 360)

                        {

                                _xzAngle -=  360;

                        }



                        _x = Math.cos(_xyAngle * Math.PI / 180);

                        _y = Math.sin(_xyAngle * Math.PI / 180);

                        _x = _x * Math.cos(_xzAngle * Math.PI / 180);

                        _z = Math.sqrt(1 - _x * _x - _y * _y);

                        if (_xzAngle > 180)

                        {

                                _z *=  -1;

                        }

                        _dot.x = _x * _rad;

                        _dot.y = _y * _rad;



                        _dot.scaleX = _dot.scaleY = _z + 1.1;

                }

        }

}


 

 

唐山flash原创动画 。本教程由 唐山卡动互动影视动漫 转载  如有版权问题请联系删除。