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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если этими точками нужно потом как-то управлять, то можно наплодить мувиков с квадратиками
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Matrix;
 
var imageMC:MovieClip = createEmptyMovieClip("mc", 0);
var tf:TextField = createTextField("tf", 1, 0, 0, 0, 0);
tf.autoSize = "left";
tf.text = "TABAK.RU";
tf.setTextFormat(new TextFormat("tahoma", 24, 0x0, true));
 
var w:Number = tf._width;
var h:Number = tf._height;
 
 
var bmd:BitmapData = new BitmapData(w, h);
bmd.draw(tf,new Matrix(),null,null,null,true);
 
 
for (var i:Number = 0; i<w*h; i++) {
	var x:Number = i%w;
	var y:Number = Math.floor(i/w);
	addPixel(i,bmd.getPixel(x, y));
 
}
bmd.dispose();
tf.removeTextField();
 
 
function addPixel(i:Number, clr:Number)
	{
		if (clr == 0xFFFFFF) return;
		var pixel:MovieClip = imageMC.createEmptyMovieClip("pixel" + i, i);
		var pixelColr = 0xFF0080;
 
		//антиалиасинг
		var clrDepth:Number = (clr >> 16) / 0xFF;
		var r:Number = pixelColr >> 16 & 0xFF ;
		r += (0xFF - r) * clrDepth;
		var g:Number = pixelColr >> 8 & 0xFF;
		g += (0xFF - g) * clrDepth;
		var b:Number = pixelColr & 0xFF;
		b += (0xFF - b) * clrDepth;
		pixelColr = r << 16 | g << 8 | b;
		///////
 
		pixel.beginFill(pixelColr);
		pixel.lineStyle(0,0xFFFFFF);
		var k:Number = 4;
		pixel.lineTo(k, 0);
		pixel.lineTo(k, k);
		pixel.lineTo(0, k);
		pixel.lineTo(0, 0);
		pixel.endFill();
 
		pixel._x = k*(i % w);
		pixel._y = k*Math.floor(i / w);
	}
 
function getPixel(x:Number, y:Number):MovieClip {
	var i = y*w+x;
	return imageMC["pixel"+i] || null;
}