I’m coming from the Java world where you could ‘just’ draw Strings. However, in Flash it’s not as easy to actually draw a String on the screen.
For that purpose I use following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | textSprite = new Sprite(); //automatically shows a hand as mouse cursor when the mouse hovers //over the text field textSprite.buttonMode = true; addChild(textSprite); var labelType : TextField = new TextField(); labelType.text = "Text in a line."; labelType.autoSize = TextFieldAutoSize.LEFT; labelType.wordWrap = true; //copy TextField into a bitmap var typeTextBitmap : BitmapData = new BitmapData(labelType.width, labelType.height,true,0x00000000); typeTextBitmap.draw(labelType); //calculate center of TextField var typeTextTranslationX:Number = -0.5*labelType.width; var typeTextTranslationY:Number = -0.5*labelType.height; //create Matrix which moves the TextField to the center var matrix:Matrix = new Matrix(); matrix.translate(typeTextTranslationX, typeTextTranslationY); //draw invisible rect in the background that will serve as click area textSprite.graphics.beginFill(0xfff0000,0); textSprite.graphics.drawRect(-0.5*labelType.width,-0.5*labelType.height, labelType.width, labelType.height); textSprite.graphics.endFill(); //actually draw the text on the stage (with no-repeat and anti-aliasing) textSprite.graphics.beginBitmapFill(typeTextBitmap,matrix,false,true); textSprite.graphics.drawRect(typeTextTranslationX, typeTextTranslationY, labelType.width, labelType.height); textSprite.graphics.endFill(); //... |
Update: I’ve enhanced the drawString code with a mouse listener by putting another sprite on top of it by drawing an invisible rectangle behind the text in the same Sprite. You can see/download the complete example here.