CreareJSのTextで指定した幅で自動折り返しした複数行テキストを返す関数(日本語対応)
EaselJS(0.6.1で確認)においてTextに日本語を指定すると、lineWidthが効かず改行されません。
これはこの問題を解決するための関数です。(Haxeコードです)
hoge.hx
import createjs.easeljs.Text;
class Main {
//指定した幅(lineWidth)で自動折り返しした複数行テキストを返す
public static function wrapText(text:Text, lineWidth:Int):String {
text.lineWidth = null;
var str = text.text;
var newStr:String = "";
var r:EReg = new EReg("[\r\n]+|[\n]+|[\n]+", "g");
var lines:Array<String> = r.split(str);
var line:String;
var words:Array<String>;
var oneLineStr:String;
var len:Int = lines.length;
for (i in 0...len) {
line = lines[i];
text.text = line;
if (text.getMeasuredWidth() < lineWidth ) {
newStr += line;
if(i < len-1) newStr += "\n";
continue;
}
words = line.split("");//一文字ごとに分割する
oneLineStr = "";
for (w in words) {
text.text = oneLineStr + w;
if (text.getMeasuredWidth() > lineWidth ) {
newStr += oneLineStr + "\n";
oneLineStr = "";
}
oneLineStr += w;
}
newStr += oneLineStr;
if(i < len-1) newStr += "\n";
}
text.text = newStr;
return newStr;
}
}
Author And Source
この問題について(CreareJSのTextで指定した幅で自動折り返しした複数行テキストを返す関数(日本語対応)), 我々は、より多くの情報をここで見つけました https://qiita.com/utibenkei/items/cec530da018540591bed著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .