如何使colorPicker中的selectedColor随机

时间:2011-08-16 00:32:09

标签: flex actionscript-3

我正在尝试将随机颜色选为我的ColorPicker的默认颜色。我在Panel的创建完成时运行我的脚本。

脚本代码如下:

public var someColor:String = new String();

    private function init():void{
        var myColor:Number = Math.round( Math.random()*0xFFFFFF );
        someColor = "0x"+myColor.toString(16);      
    }

并且ColorPicker的代码是:

<mx:ColorPicker id="calendar_color" width="20" height="20" selectedColor="{someColor}"/>

即使我看到var someColor中的颜色,它每次都会显示一个随机颜色,但是colorPicker没有显示颜色。

请让我知道,我在这里做错了什么。以及如何修复它。

3 个答案:

答案 0 :(得分:2)

1)为什么someColorString?因此,您有两种不必要的类型转换:从NumberStringmyColor.toString(16))和从StringuintselectedColor="{someColor}")。为什么不写这个:

[Bindable] public var someColor:uint = 0;

private function init():void{
    someColor = Math.random()*0xFFFFFF; 
}

2)还有一件事我也不喜欢 - 在目前的答案中,你实际上有一种不受约束的约束,只会拍一次,你不应该忘记在你的某个地方打init()码。我最好在函数调用上更改它:

private function getRandomColor():uint{
    return Math.random()*0xFFFFFF;
}

<mx:ColorPicker id="calendar_color" width="20" height="20"
    selectedColor="{getRandomColor()}"/>

此处getRandomColor()将在ColorPicker初始化时自动调用。一个不可避免的类型转换(从Numberuint),没有绑定,没有无用的属性,更短的代码。

这不是过早的优化,而是消除了过早的悲观情绪。

答案 1 :(得分:0)

您需要添加[Bindable]元数据:

[Bindable]
public var someColor:String = new String();

答案 2 :(得分:0)

我无法从这篇文章中看出,但是

是什么类
    public var someColor:String = new String();

英寸您只想验证是否可以通过您所做的参考来达到它。