如何在actionscript 3.0中旋转文本字段?只要我更改文本字段的rotation属性,它就不会显示。
例如:
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);
答案 0 :(得分:8)
要查看旋转的文字,您必须嵌入字体。
答案 1 :(得分:5)
另一种方法是,使用BitmapData
将文本字段复制到BitmapData::draw
,然后创建包含结果的Bitmap
,并将其添加到显示列表中,而不是原始列表TextField
...
这有很大的优势,你不需要嵌入字体,这会减少swf文件大小... OTOH,你将失去所有的TextField`的交互性,并且swf在播放时需要更多的RAM ,但后者并不太重要......
要使文字看起来流畅,请将Bitmap::smoothing
设置为true
...此外,如果您以更高的分辨率渲染图像,它会有所帮助...伪抗锯齿,所以说...在绘制文本时,将Matrix
按比例放大2倍,然后将Bitmap
缩小2倍...这样看起来会更好......
格尔茨
back2dos
答案 2 :(得分:4)
支持Christophe Herreman的更多信息:ActionScript - Rotating Text
答案 3 :(得分:1)
我只是想将我的经验添加到这个问题中。我也想旋转文字。
首先,我只使用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...
但每次我设置embedFonts = true
时,文本都会消失。最后我放弃了embedded the font using Flash。
var font:Font = new FontClass as Font; //FontClass was exported from Flash IDE
终于奏效了。
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);
哦,我不喜欢使用Flash IDE做任何事情。如果有人能够在不使用Flash的情况下执行此操作,请分享!
答案 4 :(得分:1)
这对我有用。
在CS5中,我需要更改“字体嵌入”对话框中的设置才能使其正常工作。
要显示“字体嵌入”对话框,请单击“字符”面板中的“嵌入”按钮,或双击“库”中的“字体”符号。
然后,选择您想要旋转的字体,然后单击Actionscript选项卡。
最后,选中Export for Actionscript复选框。保留默认值,然后单击“确定”。
以下是我使用的代码:
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);
如果那时然后通过AS对该字段应用旋转,我仍然会看到字体。
答案 5 :(得分: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);