2009-11-16 17 views
5

Questo è sperabilmente un nuovo problema o semplicemente mi manca qualcosa di ovvio. Per favore aiuto! Sto incorporando un font nella mia applicazione AS3. Sto facendo tutto da manuale e funziona a metà.Incorporamento di caratteri in AS3 - Il campo di testo dinamico scompare

Nella mia classe principale,

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

poi in seguito nel mio codice:

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"; 

Questo funziona perfettamente bene, e il testo si presenta splendidamente. Posso ruotarlo, gli alfa si applicano ad esso, ed è piacevolmente antialiasato. Il problema è che il campo di testo è dinamico - Più avanti nel codice:

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

Non appena questo codice viene attivato, il campo di testo scompare completamente. Accendo

year.border = true; 

e posso vedere che il campo di testo è ancora lì, ma la sua dimensione è ridotta fino a pochi pixel. Pensando che fosse forse l'autoSize che incasinava le cose,

//year.autoSize = ...; 

Stessi problemi. Pensando che potrebbe essere l'inclusione, ho commentato la linea:

//year.embedFonts = true; 

E il campo di testo torna alla condizione di funzionamento, ma (comprensibilmente) perde la sua capacità di fare alfa e rotazioni.

Qualche idea su cosa sta succedendo?

risposta

13

Ho scritto una lunga chiacchierata sui possibili motivi per cui questo non avrebbe funzionato. Ma mentre rileggo il tuo codice penso di aver individuato l'errore. Cambiare la riga:

year.setTextFormat(newFormat); 

A:

year.defaultTextFormat = newFormat; 

Che dovrebbe farlo!

+0

Grazie mille! Mai usato la proprietà defaultTextFormat prima di ... Impara qualcosa di nuovo ogni giorno! –

+1

Ho praticamente lo stesso problema, questa soluzione non funziona ancora per me. Fonts.enamurate mostra il mio carattere incorporato. –

+0

grazie, mi ha salvato il lavoro. Tuttavia, nel mio caso ho dovuto aggiungere invece di cambiare. – Frank

0

è necessario registrare il carattere con l'elenco di caratteri globale.

importazione:

import flash.text.Font; 

nel costruttore:

Font.registerFont(MoolEmbed) 
+0

no dice; il comportamento non cambia. : C –

0

Dopo aver impostato la proprietà di testo per la seconda volta assicuratevi di chiamare setTextFormat (newFormat) di nuovo.

3

come defaultTextFormat non ha funzionato per una combinazione delle altre due punte lavorato

import flash.text.Font; 

nel costruttore:

Font.registerFont(MoolEmbed) 

e poi

Dopo aver impostato la proprietà di testo per la per la seconda volta assicurati di chiamare di nuovo setTextFormat (newFormat).

Problemi correlati