2011-07-08 2 views
2

J'ai un textField dans lequel j'utilise des polices incorporées, le problème est quand je change sa taille et je ne mets pas la même échelle scaleX et scaleY, il semble compresser les lettres à l'intérieur quand je le réduis et étire le texte quand je l'ai fait grand ...Pourquoi le réglage différent de scaleX et scaleY pour textfield déforme le texte?

J'ai essayé d'utiliser les valeurs de largeur et de hauteur (au lieu de scaleX et scaleY mais c'est le même résultat) ... il semble que les polices incorporées conservent une sorte de rapport d'aspect ou autre, et encore cela se produit uniquement lorsque embedFonts est réglé sur vrai

+0

donc vous ne mettez pas à l'échelle la largeur et la hauteur d'un objet d'affichage vectoriel proportionnellement et vous voulez savoir pourquoi il ne maintient pas une échelle proportionnelle? – TheDarkIn1978

+0

Je pense que je ne comprends pas ce que vous essayez de faire. Si vous modifiez la taille de la police, textField doit automatiquement évoluer. Pouvez-vous envoyer votre code? – TheDarkIn1978

Répondre

2

une solution simple pour maintenir un rapport est d'utiliser largeur/hauteur et scaleX/Y ensemble:

textField.width = 250; 
textField.scaleY = textField.scaleX; 
+0

comme confirmé dans d'autres forums, il semble que c'est un comportement normal des polices incorporées, mais il semble encore que la seule solution est vraiment d'ajuster la taille de la police et non la taille du champ de texte. ... concernant la réponse de @ Corey, je vais devoir essayer celle-là, mais en fait j'ai déjà essayé de régler à la fois scaleX et scaleY à 1 puis en définissant la largeur et le résultat est qu'il est encore étiré ou compressé ... bien que je n'ai pas essayé de régler la largeur avant l'échelle bien que je pense que l'échelle affecte directement la largeur ainsi –

+0

Vous devez vous assurer que scaleX et scaleY sont toujours les mêmes, sinon vous éprouverez une distorsion. Dans votre commentaire, vous les définissez tous les deux sur 1 (bien), puis vous modifiez uniquement la largeur, ce qui n'aura aucun effet sur la propriété scaleY. – shanethehat

0

// Pourquoi n'utilisez-vous pas les "polices de périphérique"?

var tf:TextField = new TextField(); 
tf.text = "benny"; 
var myBitmapData:BitmapData = new BitmapData(300, 300); 
myBitmapData.draw(tf); 
var bmp:Bitmap = new Bitmap(myBitmapData); 
this.addChild(bmp); 
bmp.width = bmp.height = 1200; 

bmp.x = stage.stageWidth/4; 
bmp.y = stage.stageHeight/4; 
+0

nous devons gérer périphérique + polices incorporées –

+0

J'ai ajouté du code. Vérifiez avec ça. Peut-être utile pour vous. – Benny

Questions connexes