效果一
效果二
代码很简单,实现的原理一样,只不过矩形用到了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;
}
}
}
}
}
{
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;
}
}
}
}
{
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;
}
}
}
}
与你分享更多的东西...