9

有没有办法仅使用 ActionScript 在 DisplayObject 或 Shape 中绘制文本?我可以在网上找到的唯一方法是创建一个 TextField,但我无法将 TF 添加到 DisplayObject 或 Shape。

编辑:

由于viatropos解决了。

对于任何有兴趣的人:

DisplayObject实现IBitmapDrawable可以作为参数传递draw给对象的函数BitmapData,然后可以使用graphics.beginBitmapFill.

var textfield:TextField = new TextField;
textfield.text = "text";

var bitmapdata:BitmapData = new BitmapData(theWidth, theHeight, true, 0x00000000);
bitmapdata.draw(textfield);

graphics.beginBitmapFill(bitmapdata);
graphics.drawRect(0, 0, theWidth, theHeight);
graphics.endFill();
4

1 回答 1

9

好问题。这超出了我曾经需要做的任何事情,但我想我知道该怎么做。

Shape 扩展了 DisplayObject,但不是 DisplayObjectContainer,因此您不能向其添加任何内容。但是它确实有这个graphics属性,所以你可以把东西放进去。我能想到的最好方法是拍摄 TextField 的位图快照,并将其绘制到 Shape 中。我知道这是 Degrafa 为他们的RasterText 所做的(查看源代码,它真的很有帮助)。

如果您将 Shape 更改为 Sprite,则容易得多。Sprite 扩展了 DisplayObjectContainer,因此您可以在那里添加您的 TextField。

希望有帮助,兰斯

于 2010-02-26T09:25:22.343 回答