我正在尝试将随机颜色选为我的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没有显示颜色。
请让我知道,我在这里做错了什么。以及如何修复它。
答案 0 :(得分:2)
1)为什么someColor
为String
?因此,您有两种不必要的类型转换:从Number
到String
(myColor.toString(16)
)和从String
到uint
(selectedColor="{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
初始化时自动调用。一个不可避免的类型转换(从Number
到uint
),没有绑定,没有无用的属性,更短的代码。
这不是过早的优化,而是消除了过早的悲观情绪。
答案 1 :(得分:0)
您需要添加[Bindable]
元数据:
[Bindable]
public var someColor:String = new String();
答案 2 :(得分:0)
我无法从这篇文章中看出,但是
是什么类 public var someColor:String = new String();
英寸您只想验证是否可以通过您所做的参考来达到它。