package {
import classes.FireParticle;
import classes.SmokeParticle;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.display.GradientType;
import flash.display.Loader;
import flash.display.SpreadMethod;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.filters.DisplacementMapFilter;
import flash.filters.DisplacementMapFilterMode;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.net.URLRequest;
[SWF(backgroundColor = 0x000000, frameRate='30', width='180', height='400')]
public class particlefire extends Sprite
{
private var mainSprite:Sprite;
private var fireSprite:Sprite
private var smokeSprite:Sprite;
private var waterDisplaceFilter:DisplacementMapFilter;
private var waterOffset:Array = new Array();
private var waterBitmapData:BitmapData;
private var waterSprite:Sprite;
public function particlefire()
{
mainSprite = new Sprite();
mainSprite.graphics.beginFill(0x000000);
mainSprite.graphics.drawRect(0, 0, 180, 200);
mainSprite.graphics.endFill();
this.addChild(mainSprite);
fireSprite = new Sprite();
fireSprite.graphics.beginFill(0x000000);
fireSprite.graphics.drawRect(0, 0, 180, 200);
fireSprite.graphics.endFill();
mainSprite.addChild(fireSprite);
smokeSprite = new Sprite();
smokeSprite.graphics.beginFill(0xFFFFFF, 0);
smokeSprite.graphics.drawRect(0, 0, 220, 250);
smokeSprite.graphics.endFill();
smokeSprite.x = -20;
smokeSprite.y = -25;
mainSprite.addChild(smokeSprite);
var smoke:SmokeParticle = new SmokeParticle();
smokeSprite.addChild(smoke);
var plainSprite:Sprite = new Sprite();
var fillType:String = GradientType.LINEAR;
var colors:Array = [0xaaccaa, 0xFFFFFF];
var alphas:Array = [0.6, 0];
var ratios:Array = [0, 255];
var matr:Matrix = new Matrix();
matr.createGradientBox(100, 100, 0, 0, 0);
plainSprite.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, SpreadMethod.REFLECT);
plainSprite.graphics.lineStyle(1, 0xFFFFFF);
plainSprite.graphics.drawRoundRect(0, 0, 100, 100, 20, 20);
plainSprite.graphics.endFill();
plainSprite.x = 40;
plainSprite.y = 50;
this.addChild(plainSprite);
startFire()
waterSprite = new Sprite();
waterSprite.graphics.beginFill(0x000000);
waterSprite.graphics.drawRect(0, 0, 180, 200);
waterSprite.graphics.endFill();
waterSprite.y = 200;
this.addChild(waterSprite);
var waterLoader:Loader = new Loader();
var waterUrl:URLRequest = new URLRequest("images/water3.jpg");
waterLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
waterLoader.load(waterUrl);
}
private function startFire():void
{
var part:FireParticle = new FireParticle();
part.x = 10;
part.y = 10;
fireSprite.addChild(part);
}
private function loadComplete(event:Event):void
{
waterSprite.addChild(event.currentTarget.content);
waterSprite.addEventListener(Event.ENTER_FRAME, waterEffectStart);
waterBitmapData = new BitmapData(180, 200, false, 0xFFFFFF);
waterBitmapData.draw(waterSprite);
waterDisplaceFilter = new DisplacementMapFilter(waterBitmapData, new Point(0, 0), BitmapDataChannel.BLUE, BitmapDataChannel.BLUE, 10, 5, DisplacementMapFilterMode.CLAMP)
waterOffset[0] = new Point();
waterSprite.filters = [waterDisplaceFilter]
}
private function waterEffectStart(event:Event):void
{
var channels:uint = BitmapDataChannel.BLUE | BitmapDataChannel.ALPHA
waterOffset[0].x +=2;
waterOffset[0].y -=2
waterBitmapData.perlinNoise(20, 40, 3, 100, true, true, channels, false, waterOffset);
waterSprite.filters = [waterDisplaceFilter];
}
}
}