Gradient Ring, Animated loader
A Gradient loading Ring
This code is very ugly. The beginGradientFill in the Code isnt even neccesarry, because (if you change step to 50) you can see, that the code works just by cuting the angle into parts and give those parts transparency.
Quick and dirty... I did it only because there is currently no Example out there and I had to do it myself and want to share with those you are looking for it in the future
♥0 |
Line 55 |
Modified 2011-02-10 06:17:09 |
MIT License
archived:2017-03-09 23:54:23
ActionScript3 source code
/**
* Copyright Indyaner2 ( http://wonderfl.net/user/Indyaner2 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/2qyk
*/
package {
import flash.display.MovieClip;
import flash.events.*;
import flash.geom.Matrix;
import flash.display.GradientType;
public class flashTest extends MovieClip {
public var radius:Number = 60;
public var radInner:Number = 400;
public var step :Number = 2;
public var circle_pi:Number = Math.PI/180;
public var mxc:Number = 0x000000;
public var mlen:Number = 300;
public var degree:Number = 0;
public var matrix:Matrix;
public var posX:Number;
public var posY:Number;
public var mv:Number;
public var bg:MovieClip;
public var mc:MovieClip;
public function flashTest() {
bg = new MovieClip();
addChild(bg);
/*
Flash and Math AS3 How-Tos and Tips.
www.flashandmath.com
Last modified November 7, 2009.
*/
var ratios:Array=[0,42,84,126,168,210,255];
var mat:Matrix=new Matrix();
mat.createGradientBox(400,400);
bg.graphics.lineStyle();
bg.graphics.beginGradientFill(GradientType.LINEAR,[0xFF0000,0xFFFF00,0x00FF00,0x00FFFF,0x0000FF,0xFF00FF,0xFF0000],[1,1,1,1,1,1,1],ratios,mat);
bg.graphics.drawRect(0,0,400,400);
bg.graphics.endFill();
mc = new MovieClip();
mc.x = 100;
mc.y = 100;
addChild(mc);
for (var ratio:int=0; ratio<mlen; ratio+=step) {
mv = ((ratio/mlen)*100)*.01;
matrix = new Matrix();
matrix.createGradientBox((radInner*2),(radInner*2),0,-((radInner*2)*.5),-((radInner*2)*.5));
//mc.graphics.lineStyle(1, 0x000000, 1);
mc.graphics.beginGradientFill(GradientType.RADIAL,[0x000000,0x000000],[0,mv],[radius-40, radius-40],matrix);
mc.graphics.moveTo(0, 0);
posX = -radius*Math.sin(degree*circle_pi);
posY = -radius*Math.cos(degree*circle_pi);
mc.graphics.lineTo(posX, posY);
degree -= step;
posX = -radius*Math.sin(degree*circle_pi);
posY = -radius*Math.cos(degree*circle_pi);
mc.graphics.lineTo(posX, posY);
mc.graphics.endFill();
}
addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(e:Event):void{
mc.rotation += 12; // rotation thrust speed
}
}
}