classes
ShaderDisplacer.as
package sk.yoz.displacing
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Shader;
import flash.filters.ShaderFilter;
public class ShaderDisplacer extends AbstractDisplacer
{
protected var imageBitmap:Bitmap;
protected var shader:Shader;
protected var filter:ShaderFilter;
public function ShaderDisplacer(image:BitmapData, map:BitmapData,
rotationXMax:Number=10, rotationYMax:Number=10,
rotationXMultiplier:Number=1, rotationYMultiplier:Number=1)
{
super(image, map, rotationXMax, rotationYMax,
rotationXMultiplier, rotationYMultiplier);
imageBitmap = new Bitmap(image);
imageBitmap.x = -image.width / 2;
imageBitmap.y = -image.height / 2;
addChild(imageBitmap);
}
override public function set rotX(value:Number):void
{
super.rotX = value;
rotationX = value;
shader.data.dy.value = [-value * rotationYMultiplier];
}
override public function set rotY(value:Number):void
{
super.rotY = value;
rotationY = value;
shader.data.dx.value = [value * rotationXMultiplier];
}
override public function render():void
{
super.render();
filters = [filter];
}
}
}