Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3-RGB着色?_Actionscript 3_Flash_Colors - Fatal编程技术网

Actionscript 3 AS3-RGB着色?

Actionscript 3 AS3-RGB着色?,actionscript-3,flash,colors,Actionscript 3,Flash,Colors,我正在用AS3制作这个游戏。是关于一个球和一个垫子。用户可以移动垫子以防止球撞击地面。无论如何,我希望球将颜色更改为随机生成的颜色。所以我得到了每个颜色值的mathrandom,RgB 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

我正在用AS3制作这个游戏。是关于一个球和一个垫子。用户可以移动垫子以防止球撞击地面。无论如何,我希望球将颜色更改为随机生成的颜色。所以我得到了每个颜色值的mathrandom,RgB

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颜色给球上色。我甚至不知道这是否可能。

这取决于您的实现。如果您正在以编程方式创建球(例如)

。。。然后,您可以通过首先调用
ball.clear()
并使用新的颜色值重新绘制来轻松绘制更新的圆。请注意,使用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;
}
。。。此时,您的
beginll()
将如下所示:

ball.graphics.beginFill(randomRange(0x000000, 0xFFFFFF);
它有效地检索黑白之间的随机颜色

但是,如果要修改现有图像(例如加载的位图),则需要一个新的图像。这是我为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);
    }
}
var-r;
var g;
var b;
函数getColor():uint{
var结果颜色:uint;
r=Math.round(Math.random()*0xFF);//0xFF相当于255
g=Math.round(Math.random()*0xFF);
b=Math.round(Math.random()*0xFF);

resultColor=rYou想要写255,可能是:trace(0xFF.toString());//traces(255,不是256);@Fygo是正确的。RGB值是0-255,而不是1-256。我得到,1180:调用一个可能未定义的方法ColorTransform。可能是因为您忽略了导入?请尝试导入flash.geom.ColorTransform;
以后如何使用该值?mainBall.transform.ColorTransform=新的ColorTransform(“应该在这里是什么?”);@CarlA var my_color:ColorTransform=new ColorTransform();my_color.color=getColor();mainBall.transform.ColorTransform=my_color;有关详细信息,请查看此文件。
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);
    }
}
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;
}