forked from: 花火
forked from 花火 (diff: 1)
ActionScript3 source code
/**
* Copyright yooyke ( http://wonderfl.net/user/yooyke )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6huj
*/
// forked from rivi's 花火
//花火。っぽい??
package {
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.*;
import flash.utils.Timer;
import flash.geom.ColorTransform;
public class hanabi extends Sprite {
//インスタンス確保のための配列
var ci = new Array();
//タイマー
var timer:Timer;
//重力
const g:Number = 0.015;
//色落とし
var cTra:ColorTransform;
var stageW:Number = stage.stageWidth;
var stageH:Number = stage.stageHeight;
var viewBmd:BitmapData;
var viewBmp:Bitmap;
var ct:ColorTransform;
public function hanabi() {
viewBmd = new BitmapData(stageW, stageH, false, 0x0);
viewBmp = new Bitmap(viewBmd);
addChild(viewBmp);
ct = new ColorTransform();
ct.redMultiplier = 0.9;
ct.greenMultiplier = 0.9;
ct.blueMultiplier = 0.9;
addEventListener(Event.ENTER_FRAME, bitstage);
addEventListener(Event.ENTER_FRAME, move);
timer = new Timer(400);
timer.addEventListener(TimerEvent.TIMER, posi);
timer.start();
}
function posi(e:Event):void{
var xx:Number = stage.stageWidth * Math.random()*4/5 + (stage.stageWidth * 1/10);
var yy:Number = stage.stageHeight * Math.random()*2/3;
var color:Number = 0xFFFFFF * Math.random();
for( var i:int = 0; i < 83; i++){
var cir:Cir = new Cir(color);
cir.de = 100;
cir.x = xx;
cir.y = yy;
if(i < 30){
cir.vx = Math.cos(i*(360/30)/180 * Math.PI) * 2;
cir.vy = Math.sin(i*(360/30)/180 * Math.PI) * 2;
}
else if(i < 55){
cir.vx = Math.cos(i*(360/25)/180 * Math.PI) * 1.5;
cir.vy = Math.sin(i*(360/25)/180 * Math.PI) * 1.5;
}
else if(i < 70){
cir.vx = Math.cos(i*(360/15)/180 * Math.PI) * 1;
cir.vy = Math.sin(i*(360/15)/180 * Math.PI) * 1;
}
else if(i < 80){
cir.vx = Math.cos(i*(360/10)/180 * Math.PI) * 0.5;
cir.vy = Math.sin(i*(360/10)/180 * Math.PI) * 0.5;
}
else if(i < 83){
cir.vx = Math.cos(i*120/180 * Math.PI) * 0.1;
cir.vy = Math.sin(i*120/180 * Math.PI) * 0.1;
}
ci.push(cir);
}
}
function move(e:Event):void{
for( var i:int = 0; i < ci.length; i++){
addChild(ci[i]);
ci[i].vy += g;
ci[i].x += ci[i].vx;
ci[i].y += ci[i].vy;
ci[i].de -= 1.5;
if(ci[i].de < 30){
ci[i].alpha -= 0.05;
}
if(ci[i].de < 0){
removeChild(ci[i]);
this.ci.splice(i,1);
}
}
}
function bitstage(e:Event):void{
viewBmd.draw(stage,null,ct);
}
}
}
import flash.display.*;
class Cir extends Sprite{
//速度
public var vx:Number;
public var vy:Number;
public var de:Number;
public function Cir(color):void{
graphics.beginFill(color);
graphics.drawCircle(0,0,1);
graphics.endFill();
}
}