Как выбрать Color в палитре цветов, чтобы быть случайным - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь выбрать случайный цвет по умолчанию для моего ColorPicker. Я выполняю свой сценарий при завершении создания моей панели.

Код скрипта приведен ниже:

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}"/>

Несмотря на то, что когда я вижу цвет в переменной someColor, он каждый раз показывает случайный цвет, но colorPicker не отображает цвет.

Пожалуйста, дайте мне знать, что я здесь не так делаю. И как это можно исправить.

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

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), без привязок, без бесполезных свойств, более короткий код.

Это не преждевременная оптимизация, это устраняет преждевременную пессимизацию.

0 голосов
/ 16 августа 2011

Я не могу сказать из этого поста, но какой класс

    public var someColor:String = new String();

в. вам просто нужно убедиться, что к нему можно обратиться по указанной вами ссылке.

0 голосов
/ 16 августа 2011

Вам необходимо добавить метаданные [Bindable]:

[Bindable]
public var someColor:String = new String();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...