Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как программно можно отрисовать надпись в виде точек (http://www.flasher.ru/forum/showthread.php?t=130659)

australian incognito 01.10.2009 00:53

Как программно можно отрисовать надпись в виде точек
 
Вложений: 1
В приложении можно увидеть файл, где я в ручную отрисовал надпись точками размером в 1px. Сейчас есть идея повторить это при помощи кода, но даже не знаю с какой стороны к этому подступиться. Хочется отрисовать, используя мувик в качестве основы, чтобы после был доступ к каждой из точек (в частности к столбцам).

Возможно ли такое с помощью скрипта? Подайте интересных идей, как это реализовать - желательно избежать угловатости у букв (особенно видно на скруглениях). Может где есть урок или примерчик похожий?

Заранее благодарю

lumaca 01.10.2009 12:17

Объявить текст маской для мувика с точками:

Код AS1/AS2:

points.setMask(txt);


mooncar 01.10.2009 12:23

Ну вот тут посмотрите:
http://noregret.org/tutor/pixel/
Была еще одна хорошая статья с примером, но не могу сейчас вспомнить, надобности ранее не было, сразу не найду.

silin 01.10.2009 12:48

если этими точками нужно потом как-то управлять, то можно наплодить мувиков с квадратиками
Код 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;
}



Часовой пояс GMT +4, время: 18:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.