中でも色を扱うASColor型、これはよくできていますけど、ActionScriptのTextFieldなどとはデータ型が異なるので色データの行き来が不便です。
たとえば左図の場合はAsWingのコンポーネントのカラーをActionScriptのTextFieldのカラーに渡したいと言う場合です。
ASColorはASColor(rgb:unit=0x000000,alpha:Number=1)、対してActionScriptにはcolor型は無く、Numberに16進数0x000000の形式で入力すればよいことになっています。
やり方はスマートではないですが、文字列の置換を使ってデータを変換する関数はたとえば次のようなものになります。
【ASColor型を扱うFunction】
public function RGB(color:ASColor):int {
//ASColor(rgb:73aa95, alpha:1)のrgbの部分だけを16進数int(0xRRGGBB)形式で返す。
var str:String = String(color);
var reg:RegExp = /ASColor\(rgb\:(?)/g;//先頭部分の"ASColor(rgb:"を除去
str = str.replace(reg, "");
var a:Array = str.split(",");
var sR:String = "0x" + a[0];
return int(sR);
}
public function ASC(colorStr:String):ASColor{
//文字列"ASColor(rgb:73aa95, alpha:1)"をASColor型で返す。
var asc:ASColor;
var str:String = String(colorStr);
var reg:RegExp = /ASColor\(rgb\:(?)/g;//先頭部分の"ASColor(rgb:"を除去
str = str.replace(reg, "");
reg = /\)\:(?)/g;//先頭部分の")"を除去
str = str.replace(reg, "");
reg = / alpha\:(?)/g;//先頭部分の"alpha:"を除去
str = str.replace(reg, "");
reg = /\)(?)/g;//先頭部分の")"を除去
str = str.replace(reg, "");
var a:Array = str.split(",");
var sR:Number = new Number("0x" + a[0]);
asc = new ASColor(sR,a[1]);
return asc;
}
//ASColor(rgb:73aa95, alpha:1)のrgbの部分だけを16進数int(0xRRGGBB)形式で返す。
var str:String = String(color);
var reg:RegExp = /ASColor\(rgb\:(?)/g;//先頭部分の"ASColor(rgb:"を除去
str = str.replace(reg, "");
var a:Array = str.split(",");
var sR:String = "0x" + a[0];
return int(sR);
}
public function ASC(colorStr:String):ASColor{
//文字列"ASColor(rgb:73aa95, alpha:1)"をASColor型で返す。
var asc:ASColor;
var str:String = String(colorStr);
var reg:RegExp = /ASColor\(rgb\:(?)/g;//先頭部分の"ASColor(rgb:"を除去
str = str.replace(reg, "");
reg = /\)\:(?)/g;//先頭部分の")"を除去
str = str.replace(reg, "");
reg = / alpha\:(?)/g;//先頭部分の"alpha:"を除去
str = str.replace(reg, "");
reg = /\)(?)/g;//先頭部分の")"を除去
str = str.replace(reg, "");
var a:Array = str.split(",");
var sR:Number = new Number("0x" + a[0]);
asc = new ASColor(sR,a[1]);
return asc;
}