2

RGB をインラインで ARGB に変換する方法を見つけようとしています。結果を uint に入れると機能しますが、値を直接使用しようとすると、すべての値が uint であっても int のように扱われます。追加の課題で立ち往生していますか?

var test:uint = 0xCCCCCC |  (0xFF << 24);
trace(test.toString(16));
//ffcccccc

var rgb:uint = 0xCCCCCC;
var alpha:uint = 0xFF;
trace((rgb | (alpha << 24)).toString(16))
//-333334
4

2 に答える 2

2

試しましたuint((alpha << 24)).toString(16));か?

于 2012-08-06T07:22:46.933 に答える
0

それは役に立ちません。結果を uint として解釈するだけですが、AS はシフトを int として実行します。

これを試して

trace(2147483648 >> 1); // -1073741824

trace(uint(2147483648 >> 1)); // 3221225472

必要なのは、次のようにビットごとのシフト演算子を使用することだけです。

trace(2147483648 >>> 1); // 1073741824
于 2013-02-23T15:24:35.967 に答える