效果一

 

效果二

代码很简单,实现的原理一样,只不过矩形用到了Matrix类,对注册点进行了调整,效果可用于视频播放器缓冲时的loading效果,下面看代码吧!

使用Javascript格式贴出来(里面没有Actionscript)。

效果一源码:

复制代码
package 
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.Shape;
    import flash.events.Event;

    public class Main extends Sprite
    {
        private 
var  nums:Number  =   12 ;
        private 
var  segAngle:Number;
        private 
var  seg:Number;
        private 
var  arr:Array  =   new  Array  ;
        private 
var  sprite:Sprite  =   new  Sprite  ;
        private 
var  j:Number  =   1 ;
        public 
function  Main(): void
        {
            init();
        }
        private 
function  init(): void
        {
            stage.align 
=  StageAlign.TOP_LEFT;
            stage.scaleMode 
=  StageScaleMode.NO_SCALE;
            seg 
=   1   /   this .nums;
            segAngle 
=  Math.PI  *   2   /   this .nums;
            addChild(sprite);
            sprite.x 
=   this .stage.stageWidth  /   2 ;
            sprite.y 
=   this .stage.stageHeight  /   2 ;
            
for  ( var  i: int   =   0 ; i  <   this .nums; i ++ )
            {
                
var  shape:Shape  =   new  Shape  ;
                shape.graphics.beginFill(
0x000000 );
                shape.graphics.drawCircle(
0 , 0 , 10 );
                shape.graphics.endFill();
                sprite.addChild(shape);

                shape.alpha 
=  seg  *  i;
                shape.x 
=   60   *  Math.cos((i  *  segAngle));
                shape.y 
=   60   *  Math.sin((i  *  segAngle));
                arr[i] 
=  shape;

            }
            stage.addEventListener(Event.ENTER_FRAME,alphaHalder);
        }
        private 
function  alphaHalder(evt:Event): void
        {
            
for  ( var  i: int   =   0 ; i  <  nums; i ++ )
            {
                
var  shape:Shape  =  arr[i] as Shape;
                shape.alpha 
=  j;
                j 
-=   seg;
                
if  ((j  ==   0.08333333333333325 ))
                {
                    j 
=   1 ;
                }
            }

        }
    }
}
复制代码

效果二源码:

 

复制代码
package 
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.geom.Matrix;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class Bar extends Sprite
    {
        private 
var  nums: int   =   12 ;
        private 
var  m2:Matrix  =   new  Matrix();
        private 
var  m:Matrix  =    new  Matrix();
        private 
var  Abar:Array  =   new  Array();
        private 
var  segAngle:Number;
        private 
var  seg:Number;
        private 
var  j:Number  =   0 ;
        private 
var  timer:Timer  =    new  Timer( 50 );
        public 
function  Bar()
        {
            stage.align 
=  StageAlign.TOP_LEFT;
            stage.scaleMode 
=  StageScaleMode.NO_SCALE;
            initBar();
        }

        private 
function  initBar(): void
        {
            segAngle 
=   2   *  Math.PI  /   this .nums;
            seg 
=   1   /   this .nums;
            
for  ( var  i: int   =   0 ; i  <   this .nums; i ++ )
            {
                
var  bar:Shape = new  Shape();
                Abar[i] 
=  bar;
                bar.graphics.beginFill(
0xffffff );
                bar.graphics.drawRoundRect(
0 , 0 , 10 , 3 , 4 , 4 );
                bar.graphics.endFill();
                
this .addChild(bar);
                
// bar.alpha = seg * i;
                bar.x  =  bar.y  =   100 ;
                m.identity();
                m.translate(
7 , - 1 );
                m.rotate(segAngle
* i);
                m.translate(
- 7 , 1 );
                m2.identity();
                m2.translate(
100 , 100 );
                m.concat(m2);
                bar.transform.matrix 
=  m;
            }
            timer.addEventListener(TimerEvent.TIMER,alphaHalder);
            timer.start();
        }

        private 
function  alphaHalder(evt:TimerEvent): void
        {
            
for  ( var  i: int   =   0 ; i  <   this .nums; i ++ )
            {
                
var  bar:Shape  =  Abar[i] as Shape;
                bar.alpha 
=  j;
                
if (j  ==   1.0833333333333333 )
                {
                    j 
=   0 ;
                }
                j 
+=  seg;
            }
        }
    }
}
复制代码

与你分享更多的东西...