TextLineMirrorRegion Sample
♥0 |
Line 66 |
Modified 2010-10-12 14:08:10 |
MIT License
archived:2017-03-20 13:37:06
ActionScript3 source code
/**
* Copyright 9re ( http://wonderfl.net/user/9re )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/wRa7
*/
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.EventDispatcher;
import flash.geom.Rectangle;
import flash.text.engine.ContentElement;
import flash.text.engine.ElementFormat;
import flash.text.engine.GroupElement;
import flash.text.engine.TextBlock;
import flash.text.engine.TextElement;
import flash.text.engine.TextLine;
import flash.text.engine.TextLineMirrorRegion;
import flash.text.TextField;
public class TextLineMirrorRegionTest extends Sprite {
public function TextLineMirrorRegionTest() {
var str:String = 'One of the poems attributed to 持統天皇 was selected by 藤原定家 for inclusion in the popular anthology Hyakunin Isshu. The text is visually descriptive: 春過ぎて夏来にけらし白妙の衣ほすてふ天の香具山';
var regExp:RegExp = /[^a-zA-Z .:]+/g;
var tf:TextField = new TextField;
var s:String, match:Object;
var i:int = 0;
var elf:ElementFormat = new ElementFormat(null, 30, 0);
var red:ElementFormat = elf.clone();
red.color = 0xff0000;
var textElement:TextElement;
var content:Vector.<ContentElement> = new Vector.<ContentElement>;
while (match = regExp.exec(str)) {
content.push(new TextElement(
str.substring(i, match.index), elf.clone()
));
textElement = new TextElement(s = match.toString(), red.clone());
textElement.eventMirror = new EventDispatcher;
content.push(textElement);
i = match.index + s.length;
}
var factory:TextBlock = new TextBlock;
factory.content = new GroupElement(content);
var line:TextLine = null;
i = 0;
while (line = factory.createTextLine(line, 300)) {
line.x = 10;
line.y = (++i) * 30;
if (line.mirrorRegions)
drawRegions(line.mirrorRegions);
addChild(line);
}
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
}
private function drawRegions($regions:Vector.<TextLineMirrorRegion>):void {
var len:int = $regions.length;
var region:TextLineMirrorRegion;
var bounds:Rectangle;
var line:TextLine;
for (var i:int = 0; i < len; ++i)
{
region = $regions[i];
line = region.textLine;
bounds = region.bounds;
graphics.beginFill(0xff6347);
graphics.drawRect(bounds.x + line.x, bounds.y + line.y, bounds.width, bounds.height);
graphics.endFill();
}
}
}
}