2009-07-13 20 views
6

Come si ruota un campo di testo in ActionScript 3.0? Non appena cambio la proprietà di rotazione del campo di testo, non viene visualizzata.Actionscript: come ruotare un campo di testo?

ad esempio:

var txtFld:TextField = new TextField(); 
txtFld.x = 100; 
txtFld.y = 100; 
txtFld.width = 300; 
txtFld.height = 300; 
txtFld.text = "Test String"; 
txtFld.rotation = 90; 
addChild(txtFld); 

risposta

8

Per vedere il testo ruotato, si dovrà incorporare il font.

5

alternativa è, per copiare il campo di testo in un BitmapData utilizzando BitmapData::draw e quindi la creazione di un Bitmap contenente il risultato, e aggiungendo quella all'elenco di visualizzazione, invece della originale TextField ...

questo ha il grande vantaggio, che non è necessario incorporare il carattere, che riduce il file SWF ... OTOH, si perderà tutta l'interattività del TextField`, e il swf avrà bisogno di più RAM durante la riproduzione, ma quest'ultimo non è troppo significativo ...

per rendere il testo liscio, impostare Bitmap::smoothing su true ... inoltre, è utile, se si esegue il rendering dell'immagine a una risoluzione più elevata ... pseudo-anti-aliasing, per così dire ... quando si disegna il testo , passare un Matrix scalati di un fattore 2 e ridurre la portata del Bitmap di un fattore 2 ... in questo modo sembrerà meglio ...

greetz

back2dos

0
var txtFld:TextField = new TextField(); 
txtFld.x = 100; 
txtFld.y = 100; 
txtFld.width = 300; 
txtFld.height = 300; 
txtFld.text = "Test String"; 

txtFld.embedFonts = true; // to embed the font ... now roation works 

txtFld.rotation = 90; 
addChild(txtFld); 
1

volevo solo aggiungere la mia esperienza a questa domanda. Anch'io volevo ruotare il testo.

Inizialmente, ho incorporato il font utilizzando solo ActionScript.

Embed(source="C:\\WINDOWS\\Fonts\\CALIBRI.TTF", fontFamily="Calibri")] 
public static const FONT_CALIBRI:Class; 
... 
var font:Font = new Global.FONT_CALIBRI as Font; 
//Font.registerFont(Global.FONT_CALIBRI); //I tried various other things... 

Ma ogni volta che ho impostato embedFonts = true, il testo sarebbe scomparso. Alla fine ho ceduto e embedded the font using Flash.

var font:Font = new FontClass as Font; //FontClass was exported from Flash IDE 

Alla fine ha funzionato.

var textFormat:TextFormat = new TextFormat(font.fontName); 

textField = new TextField(); 
textField.defaultTextFormat = textFormat; //must be before setting the text 
textField.embedFonts = true; //needed to rotate fonts 
textField.autoSize = TextFieldAutoSize.CENTER; 
textField.antiAliasType = flash.text.AntiAliasType.ADVANCED; 
textField.text = ("TESTING") 
this.addChild(textField); 

Oh come io detesto l'utilizzo di Flash IDE per qualsiasi cosa. Se qualcuno è stato in grado di farlo senza usare Flash, si prega di condividere!

1

Questo è ciò che ha funzionato per me.

In CS5, ho dovuto modificare un'impostazione nella finestra di dialogo Incorporamento caratteri affinché funzionasse.

Per visualizzare la finestra di dialogo Incorporamento carattere, fare clic sul pulsante Incorpora nel pannello Carattere oppure fare doppio clic sul simbolo di un carattere nella Libreria.

Quindi, selezionare il carattere che si desidera poter ruotare e fare clic sulla scheda Actionscript.

Infine, selezionare la casella di controllo Esporta per Actionscript. Lasciare i valori predefiniti e fare clic su OK.

Di seguito è il codice che ho usato:

textField = new TextField(); 
textField.autoSize = TextFieldAutoSize.LEFT; 
textField.embedFonts = true; 

format.font = "Arial"; // Or whatever the name of your font is in the embed dialog 
format.size = 24; 
textField.defaultTextFormat = format; 

addChild(textField); 

Se poi quindi applicare la rotazione a quel campo tramite AS, continuo a vedere il tipo di carattere.

Problemi correlati