2010-11-08 5 views
1

При добавлении маски к родительскому спрайту с динамическим текстовым полем текст теряет сглаживание. как я могу поддерживать анти-псевдоним текста, все еще применяя маску к ее родительскому, а затем к самому себе.ActionScript - Маскировка родителя динамического текста удаляет анти-Alias?

шрифт встроен, и текстовое поле будет анимировано, поэтому оно также должно быть замаскировано вместе со своим родителем.

alt text

package 
{ 
import flash.display.Sprite; 
import flash.display.Shape; 
import flash.text.*; 

public class Test extends Sprite 
    { 
    public function Test() 
     { 
     //Create Background Canvas 
     var canvas:Sprite = new Sprite(); 
     canvas.graphics.beginFill(0xFF0000) 
     canvas.graphics.drawRect(0, 0, 100, 100); 

     //Create Dynamic Text 
     var field:TextField = new TextField(); 
     field.width = 100; 
     field.autoSize = TextFieldAutoSize.LEFT; 
     field.selectable = false; 
     field.text = "Dynamic\nText"; 

     var format:TextFormat = new TextFormat(); 
     format.font = "Myriad Pro"; 
     format.color = 0xFFFFFF; 
     format.size = 14; 
     field.setTextFormat(format); 

     //Add Dynamic Text To Background Canvas 
     field.x = canvas.width /2 - field.width/2; 
     field.y = canvas.height/2 - field.height/2; 
     canvas.addChild(field); 

     //Create Mask 
     var canvasMask:Shape = new Shape(); 
     canvasMask.graphics.beginFill(0); 
     canvasMask.graphics.drawRoundRect(0, 0, 100, 100, 50); 

     //Add Background Canvas And Mask To Display List 
//  canvas.mask = canvasMask; 
//  addChild(canvasMask); 
     addChild(canvas); 
     } 
    } 
} 

ответ

1

Кажется, что это связано с тем, как TextField кэшируется как растровое изображение при применении маски. На самом деле я смог воспроизвести одно и то же поведение, просто переключив свойство cacheAsBitmap на TextField.

Добавление этих строк, похоже, решает проблему.

field.embedFonts = true; 
    field.antiAliasType = AntiAliasType.ADVANCED; 
    //you can adjust the thickness & sharpness if needed 
    field.thickness = 200; 
+0

ahh, растровое кэширование. конечно. ваше решение работает хорошо, спасибо. но даже при настройке толщины и резкости текстового поля шрифт по-прежнему не такой, как шрифт без битового массива. не поймите меня неправильно, это очень близко и вполне приемлемо, но мне просто интересно. я полагаю, это результат встроенного шрифта, пытающегося подражать его естественному контуру вектора как растровое изображение? – TheDarkIn1978