Нарисуйте текст на фигуре в ActionScript 3 - PullRequest
9 голосов
/ 26 февраля 2010

Есть ли способ рисовать текст в DisplayObject или Shape, используя только ActionScript? Единственный способ найти в Интернете - это создать TextField, но я не могу добавить TF к DisplayObject или Shape.

Edit:

Решено благодаря 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();

1 Ответ

9 голосов
/ 26 февраля 2010

Хороший вопрос. Это больше всего на свете, но мне кажется, я знаю, как это сделать.

Shape расширяет DisplayObject, но не DisplayObjectContainer, поэтому вы ничего не можете добавить к нему. Но у есть свойство graphics, так что вы можете в него что-то нарисовать. Лучший способ, о котором я могу подумать, - это сделать растровый снимок TextField и нарисовать его в Shape. Я знаю, что именно это и делает Degrafa для их RasterText (посмотрите источник , это действительно полезно).

Если вместо этого вы изменили свою форму на спрайт, это будет намного проще. Sprite расширяет DisplayObjectContainer, поэтому вы можете добавить туда свой TextField.

Надеюсь, это поможет, Lance

...