Показать сообщение отдельно
Старый 05.10.2008, 13:49
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 11  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код:
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 );
				}
			}
		}
	}
}