package
{
import com.derschmale.fluid.FluidBitmap;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
[SWF(width="256", height="512", frameRate="30", backgroundColor="0x000000")]
public class FluidsDemo extends Sprite
{
private var _fluids : FluidBitmap;
[Embed(source="assets/images/fire.jpg")]
private var _fireAsset : Class;
private var _colourTransform : ColorTransform = new ColorTransform(1, 1.2, 1.6);
private var _normalTransform : ColorTransform = new ColorTransform();
public function FluidsDemo()
{
var textField : TextField;
addChild(new _fireAsset());
_fluids = new FluidBitmap(64, 128);
_fluids.scaleX = _fluids.scaleY = 4;
_fluids.blendMode = BlendMode.ADD;
addChild(_fluids);
textField = new TextField();
textField.autoSize = TextFieldAutoSize.LEFT;
textField.text = "CLICK - Show/Hide all channels";
textField.textColor = 0xffffff;
addChild(textField);
_fluids.transform.colorTransform = _colourTransform;
addEventListener(Event.ENTER_FRAME, handleEnterFrame);
stage.addEventListener(MouseEvent.CLICK, handleClick);
}
private function handleEnterFrame(event : Event) : void
{
_fluids.addDensity(_fluids.mouseX, _fluids.mouseY, 30);
_fluids.addDensity(_fluids.mouseX+1, _fluids.mouseY, 30);
_fluids.addDensity(_fluids.mouseX-1, _fluids.mouseY, 30);
_fluids.addDensity(_fluids.mouseX, _fluids.mouseY+1, 30);
_fluids.addDensity(_fluids.mouseX+1, _fluids.mouseY+1, 30);
_fluids.addDensity(_fluids.mouseX, _fluids.mouseY-1, 30);
}
private function handleClick(event : MouseEvent) : void
{
_fluids.showAllChannels = !_fluids.showAllChannels;
if (_fluids.showAllChannels) {
_fluids.blendMode = BlendMode.NORMAL;
_fluids.transform.colorTransform = _normalTransform;
}
else {
_fluids.blendMode = BlendMode.ADD;
_fluids.transform.colorTransform = _colourTransform;
}
}
}
}