flash on 2011-6-22
♥0 |
Line 89 |
Modified 2011-06-22 15:45:58 |
MIT License
archived:2017-03-20 06:50:13
ActionScript3 source code
/**
* Copyright yama3 ( http://wonderfl.net/user/yama3 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/usRJ
*/
package {
import flash.display.Sprite;
import flash.display.Graphics;
import flash.events.Event;
import frocessing.color.ColorHSV;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.filters.BlurFilter;
import flash.geom.Point;
[SWF(width="465", height="465", frameRate="60")]
public class FlashTest extends Sprite {
public static const WIDTH:int = 465;
public static const HEIGHT:int = 465;
public var canvas:Sprite;
public var bitmapdata:BitmapData;
public var startAngle:Number = 0;
public var points:/*StartingPoint*/Array = [];
public static const POINTSNUM:int = 10;
public var rotspeed:Number = 0;
public var color:ColorHSV = new ColorHSV();
public function FlashTest() {
if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
graphics.beginFill(0);
graphics.drawRect(0, 0, WIDTH, HEIGHT);
graphics.endFill();
bitmapdata = new BitmapData(WIDTH, HEIGHT, true, 0);
addChild(new Bitmap(bitmapdata));
canvas = new Sprite();
addChild(canvas);
for(var i:int=0; i<POINTSNUM; i++)
{
var point:StartingPoint = new StartingPoint();
point.angle = i * (360 / POINTSNUM);
points.push(point);
}
addEventListener(Event.ENTER_FRAME, EnterFrameHandler);
}
private function EnterFrameHandler(e:Event):void
{
var g:Graphics = canvas.graphics;
var rad:Number = startAngle * Math.PI / 180;
var mainsin:Number = Math.sin(rad);
var maincos:Number = Math.cos(rad);
var sx:Number = maincos * 250 + WIDTH / 2;
var sy:Number = mainsin * 250 * HEIGHT / 2;
g.clear();
g.lineStyle(1, 0xffffff);
for(var i:int=0; i<POINTSNUM; i++)
{
for(var j:int=0; j<=100; j++)
{
var defx:Number = maincos * (250 - (5 * j)) + WIDTH / 2;
var defy:Number = mainsin * (250 - (5 * j)) + HEIGHT / 2;
var angle:Number = (points[i].angle + (j * rotspeed)) % 360;
rad = angle * Math.PI / 180;
var sin:Number = Math.sin(rad);
var cos:Number = Math.cos(rad);
var psx:Number = cos * 40;
var psy:Number = sin * 80;
var x:Number = psx * maincos + psy * -mainsin + defx;
var y:Number = psx * mainsin + psy * maincos + defy;
var alpha:Number = (cos + 1) / 2 + 0.5;
g.lineStyle(1, color.value, alpha);
if(j == 0) g.moveTo(x, y);
else g.lineTo(x, y);
}
points[i].angle = (points[i].angle + 1) % 360;
}
bitmapdata.lock();
bitmapdata.draw(canvas);
bitmapdata.applyFilter(bitmapdata, bitmapdata.rect, new Point(), new BlurFilter());
bitmapdata.unlock();
rotspeed = rotspeed + 0.05;
rotspeed %= 360;
startAngle = (startAngle + 0.1) % 360;
}
}
}
class StartingPoint {
public var angle:Number;
public var x:Number;
public var y:Number;
}