AS3中的随机十六进制颜色发生器

win*_*igo 0 random flashdevelop actionscript-3

我想创建生成"随机"(伪随机)颜色的能力,并提出了用于创建所有颜色和任何颜色的代码.

我对编程非常陌生,想看看SO上是否有任何评论或批评,代码效果很好.唯一的问题是颜色偶尔太相似,难以区分它们.

我知道这可能是一种非常强力的编码方式,但它是我想到的.

十六进制发生器

public class colorGenerator 
{
    public var color:int;
    private var randomnumber:Number;
    private var first:String = "";

    public function colorGenerator():void
    {
        var colorstring:String = "0x";
        var transfer:String = "0x";

        for ( var i:uint = 0; i < 6; i++)
        {
            randomhex();

            colorstring += first;   
        }

        transfer = colorstring;
        color = int(transfer);
    }

    public function randomhex():void
    {
        randomnumber = Math.random();


        if ( -1 < randomnumber < ((.99 / 16) * 1))
            first = "0";

        else if ( ((.99/16)*1) < randomnumber < ((.99/16)*2))
            first = "1";

        else if ( ((.99/16)*2)< randomnumber < ((.99/16)*3))
            first = "2";

        else if ( ((.99/16)*3)< randomnumber < ((.99/16)*4))
            first = "3";

        else if ( ((.99/16)*4)< randomnumber < ((.99/16)*5))
            first = "4";

        else if ( ((.99/16)*5)< randomnumber < ((.99/16)*6))
            first = "5";

        else if ( ((.99/16)*6)< randomnumber < ((.99/16)*7))
            first = "6";

        else if ( ((.99/16)*7)< randomnumber < ((.99/16)*8))
            first = "7";

        else if ( ((.99/16)*8)< randomnumber < ((.99/16)*9))
            first = "8";

        else if ( ((.99/16)*9)< randomnumber < ((.99/16)*10))
            first = "9";

        else if ( ((.99/16)*10)< randomnumber < ((.99/16)*11))
            first = "A";

        else if ( ((.99/16)*11)< randomnumber < ((.99/16)*12))
            first = "B";

        else if ( ((.99/16)*12)< randomnumber < ((.99/16)*13))
            first = "C";

        else if ( ((.99/16)*13)< randomnumber < ((.99/16)*14))
            first = "D";

        else if ( ((.99/16)*14)< randomnumber < ((.99/16)*15))
            first = "E";

        else if ( ((.99/16)*15)< randomnumber < 2)
            first = "F";
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我只是将十六进制值分配给另一个类中的变量

var acolor:colorGenerator = new colorGenerator;
var COLOR:uint = acolor.color
Run Code Online (Sandbox Code Playgroud)

谢谢你的评论!

小智 8

这也应该有用.

Math.random() * 0xFFFFFF;
Run Code Online (Sandbox Code Playgroud)