2010-11-08 5 views
1

lors de l'ajout d'un masque à une image-objet parente avec un champ de texte dynamique, le texte perd l'anti-aliasing. comment puis-je maintenir l'anti-alias du texte tout en appliquant un masque à son parent, et par la suite à lui-même.ActionScript - Le masquage du texte dynamique supprime l'anti-alias?

la police est incorporée, et le champ de texte sera animé de sorte qu'il doit également être masqué avec son parent.

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); 
     } 
    } 
} 

Répondre

1

Il semble que cela a à voir avec la façon dont le TextField est mis en cache comme Bitmap lorsque vous appliquez le masque. En fait, j'étais capable de reproduire le même comportement simplement en basculant la propriété cacheAsBitmap sur le TextField. Ajout de ces lignes semblent résoudre le problème

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

ahh, mise en cache de bitmaps. bien sûr. votre solution fonctionne bien, merci. mais même avec l'ajustement de l'épaisseur et de la netteté du champ de texte, la police n'est toujours pas aussi précise que la police en cache non bitmap. ne vous méprenez pas, c'est très très proche et tout à fait acceptable, mais je suis juste curieux. Je suppose que c'est un résultat de la police incorporée essayant d'émuler son contour de vecteur naturel comme une image bitmap? – TheDarkIn1978

Questions connexes