flash on 2010-4-13

by kihon
♥0 | Line 80 | Modified 2010-04-13 23:04:11 | MIT License
play

ActionScript3 source code

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

package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.filters.GlowFilter;
	import flash.geom.ColorTransform;
	import flash.geom.Point;
 
	public class Main extends Sprite
	{
		private var bullets:Array;
		private var frame:int = 0;
		private var bd:BitmapData;
		private var image:BitmapData;
 
		public function Main()
		{	
			bd = new BitmapData(465, 465, false);
			addChild(new Bitmap(bd));
 
			var circle:Sprite = new Sprite();
			circle.graphics.lineStyle(2.0);
			circle.graphics.drawCircle(15, 15, 10);
			circle.graphics.endFill();
			circle.filters = [new GlowFilter(0x009AD6)];
 
			image = new BitmapData(30, 30, true, 0x0);
			image.draw(circle);
 
			bullets = new Array();
 
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(event:Event):void
		{
			if (frame++ % 1 == 0)
			{
				var radian:Number = Math.random() * 360;
				var bullet:Bullet = new Bullet(232, 232, Math.cos(radian), Math.sin(radian), 3);
				bullets.push(bullet);
			}
 
			bd.colorTransform(bd.rect, new ColorTransform(1, 1, 1, 1, 20, 20, 50));
 
			for (var i:int = 0; i < bullets.length; i++)
			{
				bd.copyPixels(image, image.rect, new Point(bullets[i].px, bullets[i].py));
 
				bullets[i].move();
				if (bullets[i].check())
				{
					bullets.splice(i--, 1);
				}
			}
		}
	}
}
 
class Bullet
{
	public var px:Number;
	public var py:Number;
	public var vx:Number;
	public var vy:Number;
	public var speed:Number;
 
	public function Bullet(x:int, y:int, vx:Number, vy:Number, speed:Number)
	{
		this.px = x;
		this.py = y;
		this.vx = vx;
		this.vy = vy;
		this.speed = speed;
	}
 
	public function move():void
	{	
		this.px += vx * speed;
		this.py += vy * speed;
	}
 
	public function check():Boolean
	{
		if (px < -50 || 500 < px ||
			py < -50 || 500 < py)
		{
			return true;
		}
 
		return false;
	}
}

Forked