通常のTextFieldだと、複数行指定してやれば勝手に改行してくれる。
だが、ラジオボタンコントロールのラベルは改行してくれない・・・
で、ラジオボタンのTextFieldのwordWrapプロパティとかをいじればよいということ。
FLASH-JP.COM RadioButton コンポーネントの文字を自動改行させたい
だけど、そもそも指定バイト数で折り返したいときってどうすんの?と思って検索したところ、ありがたい記事発見。
yoshiweb.NET-blog ActionScriptで文字判定
この記事を元にチャレンジ。
checkCodeは参照先そのまま。
checkHalfは、バイト数を返すように変更。
getStrBytesTotalは、checkHalfの変更に伴い変更。
setReturnCodeは、オリジナル。
// 指定バイト数(default=60)で折り返し
function setReturnCode(str:String, max:int=60):String {
var cnt:int = 0;
var len:int = str.length;
var s:int = 0
var e:int = 0
var buf:String = '';
for (e = 0 ; e < len ; e++ ) {
cnt += checkHalf(str.substr(e, 1));
if (cnt >= max) {
if (buf.length > 0) {
buf += '\r';
}
buf += str.substr(s, e-s+1);
s = e+1;
cnt = 0;
}
}
if (buf.length > 0) {
buf += '\r';
}
buf += str.substr(s, e-s+1);
return buf;
}
// 文字列のバイト数を求める
function getStrBytesTotal(str:String):int {
var cnt:int = 0;
var len:int = str.length;
while (len--) {
cnt += checkHalf(str.substr(len, 1));
}
return cnt;
}
// 指定文字のバイト数を求める→全角なら2、半角なら1を返す
function checkHalf(str:String):int{
return (checkCode(str, 0x00, 0x7f) || checkCode(str, 0xFF61,0xFF9F)) ? 1 : 2;
}
// 全半角判定→全角ならfalse、半角ならtrueを返す
function checkCode(str:String, min:uint, max:uint) {
var len:uint = str.length;
while (len--) {
var num:uint = str.substr(len, 1).charCodeAt(0);
if (num < min || num > max) {
return false;
break;
}
}
return true;
}
とりあえず、いい塩梅にはなりました。
(あんばいって塩梅って書くんだねぇ・・・よい塩加減なのね)