forked from: さくらパーティクル

by s8t1h12akj forked from さくらパーティクル (diff: 1)
♥0 | Line 65 | Modified 2017-02-26 20:37:00 | MIT License
play

ActionScript3 source code

/**
 * Copyright s8t1h12akj ( http://wonderfl.net/user/s8t1h12akj )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/QQuX
 */

// forked from chieinoue's さくらパーティクル
package {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    public class Main extends Sprite {
    
    	    public function Main(){	
		    var base:Sprite = new Sprite();
		    
            var fillType:String = GradientType.LINEAR;
            var colors:Array = [0xB4E7FA, 0xFFFFFF];
            var alphas:Array = [1, 1];
            var ratios:Array = [0x00, 0xFF];
            var matr:Matrix = new Matrix();
            var rotation:Number = Math.PI / 2;
            matr.createGradientBox(250, 450, rotation, 0, 0);
            var spreadMethod:String = SpreadMethod.PAD;
            base.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);  
            base.graphics.drawRect(0,0,500,500);
            addChild(base);
			
			addEventListener(Event.ENTER_FRAME, function(event:Event):void{
				for(var i:int = 0; i < 15; i++){
					var circle:Circle = new Circle();
					base.addChild(circle);
				}
			});
    	    }
    }
}

import flash.display.Graphics;
import flash.display.Shape;
import flash.display.Sprite;
import com.flashdynamix.motion.*;
import fl.motion.easing.*;
import flash.events.*;

internal class Circle extends Sprite{

	public function Circle():void{
		var container:Sprite = new Sprite();		
		var child:Shape = new Shape();
		var size:uint = Math.round((2 + Math.random() * 2));
		child.graphics.beginFill(getColor());
		child.graphics.drawCircle(size, size, size);
		child.graphics.endFill();
		child.x = -500 + Math.random() * 1000;
		child.y = 0;
		child.scaleY = 1.5;
		child.rotation = -30 + Math.random() * 60;
		container.addChild(child);
		addChild(container);
		
		var direction:int = 1;
		var rangeX:int = 50 + Math.floor(Math.random() * 50);
		var duration:int = 15 + Math.floor(Math.random() * 10);
		var timeline:TweensyTimeline = Tweensy.to(container, {y:500+child.height}, duration, Back.easeOut);
		timeline.onComplete = function():void{
			removeChild(container);
		};
        Tweensy.to(container, {x:500}, duration);
		addEventListener(Event.ENTER_FRAME, function(event:Event):void{
			child.x += direction;
			
			if(child.x < -1 * rangeX) direction *= -1;
			if(child.x > rangeX) direction *= -1;
		});		
	}
	
	private function getColor():uint{
		/*
		var red:uint = 0x0000FF << 16;
		var green:uint = (Math.random()*0x000066) << 8;
		var blue:uint = Math.random()*0x0000CC;
		return red+green+blue;
		*/
		return 0xFFE6E6;	//FFEEEE
	}
}