2012-03-22 11 views
5

Vorrei premettere questo muro di testo dicendo: Sono molto nuovo in questo. Potrei mancare qualcosa di ovvio.Caratteri incorporati che non compaiono nei campi di testo creati da actionscript

Sto lavorando in Flash CS5 con Actionscript 3. Sto tentando di utilizzare actionscript per creare un campo di testo e popolarlo con il testo. Ho incorporato il mio font nel mio progetto usando la finestra "Incorporamento font". Tuttavia, quando viene eseguito il codice per creare il campo di testo, se "embedFont = true;", il carattere è invisibile. Il cursore cambia ancora quando ci si libra sopra, quindi so che è lì. O almeno la sua casella di testo è, immagino. I campi di testo dinamici con testo incorporato che sono già sul palco sembrano non essere interessati.

Ho provato a cambiare il formato del contorno dei caratteri incorporati, né funziona. Ho provato a incorporare direttamente il font con il tag "embed" tramite actionscript, ma non sembra funzionare con CS5, o non so cosa sto facendo. Come puoi vedere nel codice fornito, ho provato a "registrare" il font, senza successo. Ho provato a utilizzare:

var font:Font = new screenfont(); //"screenfont" is the name from Embedding Fonts  

var format:TextFormat = new TextFormat(); 

format.font = screenfont.fontName; 

Nessun dado.

Ho seguito alcuni tutorial sull'incorporazione e ho trovato una quantità di informazioni contrastanti e confuse. Ho letto alcuni post diversi relativi a questo argomento, ma non ho ancora trovato soluzioni valide.

Ecco una semplice versione del mio codice, dove "ScreenFont" è il nome ho specificato nella finestra Embedding Fonts:

Font.registerFont(screenfont); 

      //TextFormat 
var listformat:TextFormat = new TextFormat(); 

listformat.align = TextFormatAlign.LEFT; 
listformat.size = 20.8; 
listformat.color = 0x0DAC54; 
listformat.font="Fixedsys Excelsior 3.01"; 


      //TextField 
var photolist:TextField = new TextField(); 
    photolist.x = photos_x; 
    photolist.y = tempY; 
    photolist.width = photos_wdth; 
    photolist.height = photos_hght; 
    photolist.text = photoname; 

    photolist.embedFonts = true; //<--- This freakin' guy! 

    photolist.antiAliasType = AntiAliasType.ADVANCED; 
    photolist.defaultTextFormat=listformat; 
    photolist.selectable = false; 
    photolist.wordWrap = true; 

    mediapage.photos.addChild(photolist); 

Spero che questo fornisce un quadro chiaro.

Quindi, in che modo esattamente l'incorporamento è stato eseguito in CS5?

+0

Hai dichiarato il carattere scelto nella libreria di swf? Se è così, hai selezionato anche i glifi da incorporare? – ToddBFisher

+0

Sì, e sì. Ho controllato anche "export for actionscript" e "export in frame 1". – TeaCake

+0

Non c'è niente di sbagliato nel codice. Hai provato a usare un altro font? –

risposta

4

Si dovrebbe impostare il testo come l'ultima cosa che si fa. Quindi questa riga photolist.text = photoname; dovrebbe essere dopo tutto il resto.

var photolist:TextField = new TextField(); 
photolist.x = photos_x; 
photolist.y = tempY; 
photolist.width = photos_wdth; 
photolist.height = photos_hght; 

photolist.embedFonts = true; 
photolist.antiAliasType = AntiAliasType.ADVANCED; 
photolist.defaultTextFormat=listformat; 
photolist.selectable = false; 
photolist.wordWrap = true; 
photolist.text = photoname;//<-- set text only after applying all formatting and embedding 

mediapage.photos.addChild(photolist); 
+1

Fantastico! Ci ho provato e questa è stata davvero una gran parte del problema. È venuto fuori che c'erano una serie di fattori che mi stavano rovinando. Uno dei quali avevo commentato photolist.size = TextFieldAutoSize.LEFT. L'altro e più grande problema (che il tuo suggerimento di provare caratteri diversi mi ha aiutato a diagnosticare) era che i miei font erano lasciati impostati su TLF dopo la mia precedente sperimentazione. Se non ti dispiace chiederti, quali sono le impostazioni Classic e TLF? C'è qualche ragione per cui non posso usare TLF? Dovrei essere arrabbiato per questo non posso usare TLF? – TeaCake