as3 - render text straight to Sprite.graphics?

2020-07-24 04:30发布

问题:

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

回答1:

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.



回答2:

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.



回答3:

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