forked from: Happy new year!!
forked from forked from: Happy new year!! (diff: 34)
ActionScript3 source code
/**
* Copyright smirnov48 ( http://wonderfl.net/user/smirnov48 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/cT86
*/
// forked from smirnov48's forked from: Happy new year!!
// forked from smirnov48's Happy new year!!
//Background don't captured in transparent mode
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import net.wonderfl.widget.Wanco;
[SWF(frameRate="30",backgroundColor="0x3399CC")]
public class Main extends Sprite
{
private var emiter:Emiter;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var bg:Sprite = new Sprite();
bg.graphics.lineStyle(0);
bg.graphics.beginFill(0x3399CC);
bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
bg.graphics.endFill();
addChild(bg);
var unko:Wanco = new Wanco();
unko.scaleX = unko.scaleY = 0.8;
unko.x = stage.stageWidth / 2;
unko.y = 160;
addChild(unko);
emiter = new Emiter(Star);
emiter.x = stage.stageWidth / 2;
emiter.y = 185;
addChild(emiter);
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(e:MouseEvent):void
{
emiter.turn();
}
}
}
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
import net.wonderfl.widget.Wanco;
internal class Emiter extends Sprite
{
private const PARTICLES_PER_SECOND:Number = 13;
private const MAX_PARTICLES:int = 100;
private var particle:Class;
private var particles:Array = new Array();
private var time:uint = getTimer();
private var blink:Boolean = false;
public function Emiter(particle:Class)
{
this.particle = particle;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function turn():void
{
blink = !blink;
}
private function onEnterFrame(e:Event):void
{
crateNewParticles();
updateParticles();
checkAndRemoveParticles();
}
private function updateParticles():void
{
for (var i:int = 0; i < particles.length; i++) {
var part:Star = particles[i] as Star;
if (blink) {
part.alpha += part.va;
if (part.alpha >= 1 || part.alpha <= 0) {
part.va = -part.va;
part.alpha += part.va;
}
} else {
part.x += part.vx;
part.y += part.vy;
part.rotation += part.vr;
}
}
}
private function crateNewParticles():void
{
if (particles.length > MAX_PARTICLES) {
return;
}
var newTime:uint = getTimer();
var delta:int = newTime - time;
var countToCreate:int = delta / 1000 * PARTICLES_PER_SECOND;
if (countToCreate > 0) {
time = newTime;
for (var i:int = 0; i < countToCreate; i++) {
var part:Star = (new particle()) as Star;
resetSpeedAndSize(part);
part.alpha = Math.random();
addChild(part);
particles.push(part);
}
}
}
private function resetSpeedAndSize(part:Star):void
{
part.scaleX = part.scaleY = Math.random() * 0.5;
part.va = part.scaleX * 0.05 + 0.002;
part.vr = Math.random() * 2 - 1;
part.vx = Math.random() * 1.2 - 0.6;
part.vy = Math.random() * 2 + 1;
}
private function checkAndRemoveParticles():void
{
for (var i:int = 0; i < particles.length; i++) {
var part:Star = particles[i] as Star;
if (part.y > stage.stageHeight) {
part.x = 0;
part.y = 0;
resetSpeedAndSize(part);
}
}
}
}
internal class Star extends Sprite
{
public var va:Number = 0;
public var vr:Number = 0;
public var vx:Number = 0;
public var vy:Number = 0;
public function Star()
{
var unko:Wanco = new Wanco();
addChild(unko);
}
}
