2009-11-16 4 views
5

Dies ist hoffentlich ein neues Problem oder nur ich vermisse etwas Offensichtliches. Bitte helfen Sie! Ich habe eine Schriftart in meine AS3-Anwendung eingebettet. Ich mache alles von Buch zu Buch und es funktioniert nur halb.Einbetten von Fonts in AS3 - Dynamisches Textfeld verschwindet

In meiner Hauptklasse,

[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed", 
     mimeType="application/x-font")] 
    var MoolEmbed:Class; 

dann später in meinem Code:

var newFormat:TextFormat = new TextFormat(); 
    newFormat.font = "MoolEmbed"; 
    newFormat.size = 20; 
    newFormat.color = 0xFCF374; 

    year.autoSize = TextFieldAutoSize.LEFT; 
    year.text = "Hello World"; 
    year.embedFonts = true; 
    year.setTextFormat(newFormat); 
    year.antiAliasType = "advanced"; 

Das funktioniert völlig in Ordnung, und der Text zeigt schön auf. Ich kann es drehen, Alphas anwenden, und es ist schön antialiased. Das Problem ist, dass das Textfeld dynamisch ist - später im Code:

year.text = "And a second hello world"; 

Sobald dieser Code ausgelöst wird, verschwindet das Textfeld vollständig. Ich schalte

year.border = true; 

und ich kann sehen, dass das Textfeld ist immer noch da, aber es ist Größe nur ein paar Pixel geschrumpft unten. Denken Sie vielleicht war es die AutoSize messing Dinge bis,

//year.autoSize = ...; 

Gleiche Probleme. Denken, es könnte das Einbetten, kommentierte ich die Zeile aus:

//year.embedFonts = true; 

Und das Textfeld kehrt zum Betriebsstatus, aber (verständlicherweise) verliert es seine Fähigkeit, Alphas und Drehungen zu tun.

Jede Idee, was los ist?

Antwort

13

Ich schrieb einen langen gesprächigen Beitrag zu möglichen Gründen als warum das nicht funktionieren würde. Aber als ich deinen Code nochmal gelesen habe, habe ich den Fehler entdeckt. die Zeile ändern:

year.setTextFormat(newFormat); 

An:

year.defaultTextFormat = newFormat; 

Das sollte es tun!

+0

Vielen Dank! Habe die Eigenschaft defaultTextFormat nie zuvor benutzt ... Lerne jeden Tag etwas Neues! –

+1

Ich habe fast das gleiche Problem, diese Lösung funktioniert immer noch nicht wirklich für mich. Fonts.enamurate zeigt meine eingebettete Schriftart an. –

+0

danke, rettete mir viel Arbeit. In meinem Fall musste ich jedoch anstelle von Änderungen hinzufügen. – Frank

0

Sie müssen Ihre Schriftart mit der globalen Schriftartenliste registrieren.

Import:

import flash.text.Font; 

in Ihrem Konstruktor:

Font.registerFont(MoolEmbed) 
+0

keine Würfel; Verhalten ändert sich nicht. : C –

0

Nachdem Sie den Text Eigenschaft zum zweiten Mal eingestellt sicherstellen, dass Sie rufen setTextFormat (newFormat) wieder.

3

als default funktioniert nicht für eine Kombination aus den beiden anderen Spitzen arbeiteten

import flash.text.Font; 

in Ihrem Konstruktor:

Font.registerFont(MoolEmbed) 

und dann

Nachdem Sie die Text-Eigenschaft für die Set Zum zweiten Mal stellen Sie sicher, dass Sie setTextFormat (newFormat) erneut aufrufen.