flash on 2012-11-27
♥0 |
Line 86 |
Modified 2012-11-27 16:02:12 |
MIT License
archived:2017-03-20 03:26:50
ActionScript3 source code
/**
* Copyright Caiim. ( http://wonderfl.net/user/Caiim. )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/fvRn
*/
package {
import flash.filters.ColorMatrixFilter;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.geom.Rectangle;
import flash.display.BitmapData;
import flash.events.Event;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.Sprite;
public class FlashTest extends Sprite {
private var objectLayer:Sprite = new Sprite();
private var bulletLayerBD:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
private var bulletLayer:Bitmap = new Bitmap(bulletLayerBD);
private var bulletVec:Vector.<Bullet> = new Vector.<Bullet>();
private var :ColorMatrixFilter = new ColorMatrixFilter(1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 0.8, -20);
private var updateTimer:Timer = new Timer(10);
private var target:MovieClip = new MovieClip();
public function FlashTest() {
// write as3 code here..
setupStage();
setupListeners();
}
private function setupStage():void
{
addChild(bulletLayer);
addChild(objectLayer);
target.graphics.beginFill(0x00ff00, 1);
target.graphics.drawRect(0, 0, 10, 10);
target.graphics.endFill();
target.x = target.y = 100;
objectLayer.addChild(target);
}
private function setupListeners():void
{
stage.addEventListener(MouseEvent.CLICK, addBullets);
updateTimer.addEventListener(TimerEvent.TIMER, update);
updateTimer.start();
}
private function addBullets(e:MouseEvent):void
{
for(var i:int = 0;i<360;i+=60)
{
var b:Bullet = new Bullet(e.stageX, e.stageY, 10, i, 5, target);
bulletVec.push(b);
}
}
private function update(e:Event):void
{
bulletLayer.bitmapData.applyFilter(fadeColorFilter);
for each(var b:Bullet in bulletVec)
{
bulletLayer.bitmapData.fillRect(new Rectangle(b.x, b.y, 10, 10), 0xffffff);
b.update();
}
}
}
}
class Bullet
{
public var x:int = 0;
public var y:int = 0;
private var speedX:Number = 0;
private var speedY:Number = 0;
private var turnPower:Number = 1;
private var target:Object = null;
public function Bullet(x:int, y:int, distance:int, angle:Number, speed:Number, target:Object)
{
this.x = x + Math.cos(angle) * distance;
this.y = y + Math.sin(angle) * distance;
this.speedX = Math.cos(angle) * speed;
this.speedY = Math.sin(angle) * speed;
this.target = target;
}
public function update():void
{
var angle:Number = Math.atan2(target.y - y, target.x - x);
this.speedX += Math.cos(angle) * turnPower;
this.speedY += Math.sin(angle) * turnPower;
this.x += speedX;
this.y += speedY;
}
}