我在AS3制作这个游戏。它是关于一个球和一个垫。使用者可以移动垫以防止球撞击地板。无论如何,我希望球将颜色改变为随机生成的颜色。所以我得到了每个颜色值的数学随机数,R G B。
var r;
var g;
var b;
function getColor(){
r = Math.round(Math.random()*256);
g = Math.round(Math.random()*256);
b = Math.round(Math.random()*256);
}
但我不知道如何用RGB颜色为球着色。我甚至不知道是否可能。
答案 0 :(得分:1)
这取决于您的实施。如果您是以编程方式创建球(例如)......
var ball:Shape = new Shape();
ball.graphics.beginFill(0xFFFFFF);
ball.graphics.drawCircle(0, 0, 10);
ball.graphics.endFill();
...然后您可以通过先调用ball.clear()
并使用新的颜色值重新绘制更新的圆圈来轻松绘制。请注意beginFill()
使用uint值,您可以使用相同的Math.random()
轻松生成这些值。这是您的功能的修改版本,允许您定义低和&高价值。
function randomRange(low:Number=0, high:Number=1):Number {
/* Returns a random number between the low and high values given. */
return Math.floor(Math.random() * (1+high-low)) + low;
}
...此时您的beginFill()
将如下所示:
ball.graphics.beginFill(randomRange(0x000000, 0xFFFFFF);
有效地检索黑白之间的随机颜色。
但是,如果要修改现有图像(例如加载的位图),则需要colorTransform()
。这是我写的RGB的一个:
tintRGB(target:Object, r:Number, g:Number, b:Number, alpha:Number = 1):void {
if (target.hasOwnProperty("transform")) {
target.transform.colorTransform = new ColorTransform(0,0,0,alpha,r,g,b,0);
}
}
答案 1 :(得分:1)
var r;
var g;
var b;
function getColor():uint{
var resultColor:uint;
r = Math.round(Math.random()*0xFF); //0xFF equivalent to 255
g = Math.round(Math.random()*0xFF);
b = Math.round(Math.random()*0xFF);
resultColor = r<<16 | g<<8 | b;
return resultColor;
}
AS3中的颜色为0xRRGGBB格式。因此,我们使用按位运算组合3个值。 希望这可能有所帮助。请查看此信息以获取更多信息:Bit Operations in AS3