Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rowboat.effects;
- import flash.geom.Rectangle;
- import flixel.FlxSprite;
- import flixel.text.FlxText;
- import flixel.util.FlxColor;
- import flixel.util.FlxDestroyUtil;
- class CrookedText extends FlxSprite
- {
- private var letter:FlxText;
- public function new(?text:FlxText, angleRange:Int = 10, yRange:Int = 5, borderX:Int = 0, borderY:Int = 0, backGround:FlxColor = FlxColor.TRANSPARENT)
- {
- super(text.x, text.y);
- letter = new FlxText();
- letter.antialiasing = text.antialiasing;
- if (text != null)
- generate(text, angleRange, yRange, borderX, borderY, backGround);
- }
- public function generate(text:FlxText, angleRange:Int = 10, yRange:Int = 5, borderX:Int = 0, borderY:Int = 0, backGround:FlxColor = FlxColor.TRANSPARENT)
- {
- var w:Int = 2 * borderX + Std.int(text.fieldWidth);
- var h:Int = 2 * borderY + text.frameHeight + yRange * 2;
- makeGraphic(w, h, backGround);
- if (text.alignment == "center")
- x -= width / 2;
- if (text.alignment == "right")
- x -= width;
- letter.setFormat(text.font, text.size, text.color);
- if (text.borderStyle != NONE)
- letter.setBorderStyle(text.borderStyle, text.borderColor, text.borderSize, text.borderQuality);
- for (i in 0 ... text.text.length)
- {
- letter.text = text.text.charAt(i);
- var t:FlxText = new FlxText(text.x, text.y, 0, text.text, text.size, true);
- t.font = text.font;
- var letterBounds:Rectangle = new Rectangle(((t.fieldWidth / t.text.length) * i), yRange + borderY, t.fieldWidth / t.text.length, t.frameHeight);
- letter.fieldWidth = letterBounds.width;
- letter.height = letterBounds.height;
- letter.updateFramePixels();
- var sign:Int = (Math.random() > 0.5) ? 1 : -1;
- letter.angle = Math.random() * angleRange * sign;
- var letterOffsetY:Float = Math.random() * yRange;
- stamp(letter, Std.int(borderX + letterBounds.x), Std.int(borderY + letterBounds.y + yRange));
- }
- }
- override public function destroy():Void
- {
- letter = FlxDestroyUtil.destroy(letter);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement