2

我试图弄清楚如何将 RGB 转换为 ARGB 内联。如果我将结果放入 uint,它可以工作,但如果我尝试直接使用该值,它会将其视为一个 int,即使所有值都是 uint。我被额外的任务困住了吗?

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 回答