as3 - render text straight to Sprite.graphics?

2020-07-24 04:54发布

Because I'm a terrible, bad person who likes to do things differently for no reason, I'd love to be able to do something like mySprite.graphics.drawText(...).

As I understand things, the only way to get text currently is to create a TextField and add it as a child of mySprite. In my particular situation I'd rather not do that.

Any advice appreciated!

ooo

3条回答
女痞
2楼-- · 2020-07-24 05:07

Wrong bzzzzzzzt create a new BitmapData object, create a bitmap, adding the bitmapData to it and then adding that bitmap as a child to your sprite. Example:

var myTextImage:BitmapData = new BitmapData(textField.width, textField.height, true, 0x000000ff);

myTextImage.draw(textField);

mySprite.addChild(new Bitmap(myTextImage));

stage.addChild(mySprite);

I just made that code up so you'll have to adapt it but the principle should be more than clear enough to adapt it to your project.

查看更多
Luminary・发光体
3楼-- · 2020-07-24 05:23

If you wanted to wrap it up in a method of Sprite I would simply extend the Sprite class, add the function drawText to it. Within that method add the TextField etc. But it doesn't sound like you want that.

In which case have a look here http://lab.polygonal.de/?p=916

They have created a collection of code that can render fonts without, well, fonts. There are disadvantages like file size, but it is possible.

查看更多
▲ chillily
4楼-- · 2020-07-24 05:24

Create a new BitmapData object : bitmapdata = new BitmapData(txt.width, txt.height, true, 0x000000ff);

Draw your textfield on it : bitmapdata.draw(txt);

And then use graphics class and it works !

sprite.graphics.beginBitmapFill(bitmapdata);
sprite.graphics.drawRect(0,0,txt.width,txt.height);
sprite.graphics.endFill();

C ya

查看更多
登录 后发表回答