タイプintをflexで8桁の16進数に変換するにはどうすればよいですか?
c#[ToString( "X8")]と同様の関数が必要です。この関数はc#で仕事をします。しかし、フレックスのオプションは何ですか?
タイプintをflexで8桁の16進数に変換するにはどうすればよいですか?
c#[ToString( "X8")]と同様の関数が必要です。この関数はc#で仕事をします。しかし、フレックスのオプションは何ですか?
ドキュメントで説明されているように、それはほとんど同じです:
var myInt:int = 255;
var hex:String = myInt.toString(16);
trace(hex); //outputs "ff"
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/int.html#toString()を参照してください
。必要な色の場合:ドキュメントには、そのケースの処理方法も記載されています。
ただし、先行ゼロを追加する組み込みの方法はありません。このような方法を使用して、次のことを行うことができます。
public function pad(s:String, pattern:String="0", minChars:int=8):String {
while (s.length < minChars) s = pattern + s;
return s;
}
trace(pad(hex)); //000000ff
注:これは6桁の16進数の色用ですが、任意の数の16進数に簡単に変更できます。
文字列のパディングに大きく依存するパディングされた16進値を出力する多くの方法を見つけました。
私はそれらのどれにも本当に満足していなかったので、これが私が思いついたものです:(ボーナスとしてそれは1行に収まります)ケースは本当に無関係なので、toUpperCase()呼び出しを削除することによってそれを短くすることさえできます。
"0x"+ (i+0x1000000).toString(16).substr(1,6).toUpperCase()
それを白黒に床または天井にし、それを関数に入れたい場合:
public static function toHexColor(i:Number):String {
return i<0 ? "0x000000" : i>0xFFFFFF ? "0xFFFFFF" : "0x"+ (i+0x1000000).toString(16).substr(1,6).toUpperCase() ;
}
コメント付きのより拡張されたバージョンは次のとおりです。
public static function toHexColor(i:Number):String {
//enforce ceiling and floor
if(i>0xFFFFFF){ return "0xFFFFFF";}
if(i<0){return "0x000000";}
//add the "magic" number
i += 0x1000000;
//append the 0x and strip the extra 1
return "0x"+ i.toString(16).substr(1,6).toUpperCase();
}