我想将文本绘制到bitmapData并允许它旋转,但旋转文本会使其消失:(
我使用的代码类似于:
var tf : TextField = new TextField();
tf.text = "testing";
var mat : Matrix = new Matrix();
mat.identity();
mat.rotate(angle);
var img : BitmapData = new BitmapData(500, 500, true, 0);
img.draw(tf, mat, null, null, null, true);
如果我评论mat.rotate(角度);文字显得很好。这不是角度值,因为我可以这样做:
var tf : TextField = new TextField();
tf.text = "testing";
var mat : Matrix = new Matrix();
mat.identity();
mat.rotate(angle);
var img : BitmapData = new BitmapData(500, 500, true, 0);
var txtImg : BitmapData = new BitmapData(500, 500, true, 0);
txtImg.draw(tf, null, null, null, null, true);
img. draw(txtImg , mat, null, null, null, true);
并且文本将显示为旋转(这是此问题的解决方法,但我需要创建2个BitmapData图像并调用绘制两次,这会占用CPU和内存)。我宁愿不必进行所有这些额外的处理来获得一种效果,理论上它应该只需要一次调用draw方法。我做错了什么?
由于
答案 0 :(得分:2)
你应该试试
tf.embedFonts = true;
如果您不使用嵌入字体,Flash将无法使用TextField进行任何图形处理。
来自@昨天的评论(为了更好的格式化):
对于可能有同样问题的其他人,我使用Embed标签嵌入我的字体。类似的东西:
[Embed(source='../libs/font.ttf', fontFamily='MyFont', embedAsCFF='false')]
private const MyFont : Class;
我打电话
Font.registerFont(MyFont);
在使用字体之前代码中的某处。