
Код:
package
{
import flash.display.*;
import flash.text.*;
public class Main extends Sprite
{
public function Main():void
{
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = "hello";
tf.setTextFormat(new TextFormat("_sans", 96));
var distortFilter:Distort = new Distort(tf.width,tf.height);
tf.filters = [distortFilter.filter];
addChild(tf);
}
}
}

Код:
package
{
import flash.display.*;
import flash.filters.*;
public class Distort
{
public var filter:DisplacementMapFilter = new DisplacementMapFilter();
public function Distort(w:Number,h:Number)
{
filter.componentY = BitmapDataChannel.RED;
filter.mode = DisplacementMapFilterMode.CLAMP;
filter.scaleY = 0.5 * h;
filter.mapBitmap = new BitmapData(w, h, false, 0x808080);
for (var i:int = 0; i < w; i++) {
var kx:Number = 1 - 4 * (i/w - 0.5) * (i/w - 0.5);
for (var j:int = 0; j < h; j++) {
var ky:Number = j / h;
var r:int = Math.floor(128 * kx * ky);
filter.mapBitmap.setPixel(i, j, r << 16 );
}
}
}
}
}