动作:如何旋转文本字段?
-
12-09-2019 - |
题
您如何旋转在ActionScript 3.0文本字段?当我改变文本字段的旋转属性,它不会显示。
例如:
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);
解决方案
一些更多的信息支持克里斯托夫Herreman:的ActionScript - 旋转文本
其他提示
为了看旋转的文本,你必须嵌入字体。
一种替代是,使用BitmapData
然后创建包含结果的BitmapData::draw
,并添加到文本字段复制到一个Bitmap
一个到显示列表,而不是原来的TextField
...
这有很大的优势,你并不需要嵌入字体,减少了文件大小的SWF ... OTOH,你将失去所有的TextField`的交互性,以及SWF将需要更多的内存玩的时候的,但后者不是太显著...
有关的文字看起来光滑,设置Bitmap::smoothing
到true
......也有帮助,如果你在一个更高的分辨率...伪抗锯齿渲染图像,可以这么说...绘制文本时,路过因子2按比例提高Matrix
和因子2按比例缩小Bitmap
...这样,它会看起来更好......
格尔茨
back2dos
我只是想我的经验加入到这个问题。我也想旋转文本。
首先,我嵌入仅使用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
时,文字会消失。最后我给在和使用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任何东西。如果有人能够做到这一点,而无需使用闪光灯,请你分享!
这是为我工作。
在CS5,我需要改变设置在字体嵌入对话框为它工作。
要显示字体嵌入对话框,可以单击在字符面板嵌入按钮,或者在库中双击一个字体符号。
然后选择你要能够旋转,并单击ActionScript标签的字体。
最后,检查为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应用旋转到该字段,我仍然可以看到的字体。
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);