Flash AS3, сглаживание текста контролируется кодом? - PullRequest
2 голосов
/ 06 декабря 2010

Контролируется ли сглаживание текста кодом или он встроен?Я хочу взять файл SWF, созданный кем-то другим, найти весь текст в файле SWF и изменить все режимы сглаживания с анимации на удобочитаемость.Так ли это работает в as3?Честно говоря, я еще не пробовал сглаживания в коде.

1 Ответ

8 голосов
/ 06 декабря 2010

вы можете установить antiAliasType для текстового поля в 'advanced', что дает вам точный контроль над резкостью и толщиной.однако шрифты должны быть встроены (включительно: для текстового поля должно быть установлено значение embedFonts, значение true, объекты TextFormat должны иметь свойства шрифта, точно равные fontName встроенного шрифта, и шрифты должны быть уже скомпилированы).так технически это возможно?- да.это может работать так, как вы хотите?нет, если только вы не планируете работать с swiff, который, как вы знаете, уже использует встроенные шрифты.затем вам нужно будет извлечь все текстовые поля из загруженного swiff (вы можете использовать что-то вроде этого: http://upshots.org/?p=107,, затем использовать array.filter, чтобы получить обратно только объекты TextField), затем применить свою логику.

РЕДАКТИРОВАТЬ: добавление образца кода

// assuming you're using the DisplayList class linked above
var request:URLRequest = new URLRequest("textfields.swf");
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
loader.load(request);

function completeHandler(event:Event):void{

    var content:DisplayObjectContainer = event.target.loader.content as DisplayObjectContainer;
    addChild(content);

    var children:Array = new DisplayList(content);
    children = children.filter(function(item:Object, index:int, array:Array):Boolean {
        return item is TextField;
    });
    children.forEach(function(item:Object, index:int, array:Array):void {
        var textfield:TextField = item as TextField;
        textfield.antiAliasType = AntiAliasType.ADVANCED;
        textfield.sharpness = 100;
        textfield.thickness = 100;
    });
}

только что провел быстрый тест - работает как описано.

...