Flurryを作...れなかった 2
forked from Flurryを作...れなかった (diff: 42)
【Flurryを作りたい】 ver.2 2010.09.23 触手を2本にしてみた.少し雰囲気出てきたかな... 処理を少しでも軽くするため,stageのサイズを小さくしてみた. ver.1 2010.09.23 sin,cosでウニウニさせてみる. Math.random()を使うと煙に近くなった. EnterFrameでどんどんaddChild()しているので処理は激重...
ActionScript3 source code
/**
* Copyright geko ( http://wonderfl.net/user/geko )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/amoS
*/
// forked from KoheiTAKAMIYA's Flurryを作...れなかった
package {
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
[SWF(width="200",height="200",frameRate="30")]
public class FlashTest extends Sprite {
private var bmp:Bitmap = new Bitmap();
private var flurry:Flurry;
private var flurryB:Flurry;
private var i:Number = 0;
public function FlashTest() {
bmp.bitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0x000000);
addChild(bmp);
addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(event:Event):void{
i+=0.02;
flurry = new Flurry(3, Math.sin(Math.PI/2*i), 0.03, 0);
addChild(flurry);
flurry.x = stage.stageWidth/2;//mouseX;
flurry.y = stage.stageHeight/2;//mouseY;
flurry.addEventListener(Event.ENTER_FRAME, update);
flurryB = new Flurry(Math.cos(Math.PI/2*(i+0.03)), 3, 0.05, 0.03);
addChild(flurryB);
flurryB.x = stage.stageWidth/2;//mouseX;
flurryB.y = stage.stageHeight/2;//mouseY;
flurryB.addEventListener(Event.ENTER_FRAME, update);
}
public function update(event:Event):void{
var target:Flurry = event.target as Flurry;
target.update();
if(Math.min(Math.max(target.x, -3), stage.stageWidth+3) == target.x &&
Math.min(Math.max(target.y, -3), stage.stageHeight+3) == target.y &&
target.alpha > 0) return;
target.removeEventListener(Event.ENTER_FRAME, update);
removeChild(target);
target = null;
}
}
}
import flash.display.Shape;
import flash.display.BlendMode;
import flash.events.Event;
import flash.filters.BlurFilter;
class Flurry extends Shape{
private var filter:BlurFilter = new BlurFilter(4,4,3);
private var spout:Object = new Object();
private var wind:Object = new Object();
public function Flurry(spoutX:Number = 0, spoutY:Number = 0, windX:Number = 0, windY:Number = 0):void{
blendMode = BlendMode.ADD;
filters = [filter];
spout.x = spoutX/3;
spout.y = spoutY/3;
wind.x = windX/3;
wind.y = windY/3;
graphics.beginFill(0x33CCCC);
graphics.drawCircle(0, 0, 2.5);
graphics.endFill();
}
public function update():void{
spout.x += wind.x;
spout.y += wind.y;
x += spout.x;
y += spout.y;
alpha -= 0.008;///= 1.03;
}
}
