forked from: キラキラ2
forked from キラキラ2 (diff: 114)
ActionScript3 source code
/**
* Copyright fakestar0826 ( http://wonderfl.net/user/fakestar0826 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/e52b
*/
// forked from matsu4512's キラキラ2
package {
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.PixelSnapping;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.geom.Matrix;
import frocessing.color.ColorHSV;
[SWF(width=465, height=465, backgroundColor=0x0, frameRate=30)]
public class kirakira2 extends Sprite {
private var cvs:BitmapData;
private var glow_bmpData:BitmapData;
private var glowMtx:Matrix;
private var particles:Array;
private var hsvc:ColorHSV = new ColorHSV(0,0.6,0.6);
private var color:uint = 0;
private var cnt:int = 0;
public function kirakira2(){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
this.cvs = new BitmapData(465, 465, false, 0x0);
addChild(new Bitmap(cvs)) as Bitmap;
glow_bmpData = new BitmapData(465 / 5, 465 / 5, false, 0x0);
var bm:Bitmap = addChild(new Bitmap(glow_bmpData, PixelSnapping.NEVER, true)) as Bitmap;
bm.scaleX = bm.scaleY = 5;
bm.blendMode = BlendMode.ADD;
glowMtx = new Matrix(0.2, 0, 0, 0.2);
particles = [];
init();
//addEventListener(Event.ENTER_FRAME, update);
var timer:Timer = new Timer(300);
timer.addEventListener(TimerEvent.TIMER, update);
timer.start();
}
private function init():void
{
var n:int = 2000;
while (n--) {
hsvc.h += 3;
var c:uint = Math.random() * 0xFFFFFF;//(hsvc.toRGB().value);
createParticle(Math.random() * 465, Math.random() * 465, c, Math.random()*10-5, Math.random()*10-5);
}
}
public function createParticle(xx:Number, yy:Number, c:int, vx:Number, vy:Number):void {
var p:Particle = new Particle();
p.x = xx;
p.y = yy;
p.vx = vx;
p.vy = vy;
p.c = c;
particles.push(p);
}
public function update(e:TimerEvent):void {
if(cnt % 2 == 1)
{
glowMtx.a=0.2;
glowMtx.d=0.2;
cvs.lock();
cvs.fillRect(cvs.rect, 0);
var n:int = particles.length;
while (n--) {
var p:Particle = particles[n];
cvs.setPixel(p.x, p.y, p.c);
p.x++;
p.y++;
}
cvs.unlock();
glow_bmpData.draw(cvs, glowMtx);
}
else
{
glowMtx.a=0.2;
glowMtx.d=0.2;
cvs.lock();
cvs.floodFill(0, 0, 0);
glow_bmpData.draw(cvs, glowMtx);
cvs.unlock();
}
/*
n = 10;
hsvc.h += 3;
var c:uint = (hsvc.toRGB().value);;
while (n--) {
createParticle(mouseX, mouseY, c, Math.random()*10-5, Math.random()*10-5);
}
*/
cnt++;
}
}
}
class Particle{
public var x:Number;
public var y:Number;
public var vx:Number;
public var vy:Number;
public var c:uint;
}
