Я хочу динамически создавать кнопки со значками в Flex с помощью ActionScript.
Я пробовал это, но безуспешно:
var closeButton = new Button();
closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png");





Я полагаю, вы добавляете его на сцену?
Кроме того, я думаю, что в вашем Embed отсутствует закрывающая цитата / парен.
closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png");
должно быть:
closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png')");
Я нашел ответ, который мне подходит. В моем файле .mxml я создаю классы для значков, которые буду использовать:
// Classes for icons
[Embed(source='images/closeWindowUp.png')]
public static var CloseWindowUp:Class;
[Embed(source='/images/Down_Up.png')]
public static var Down_Up:Class;
[Embed(source='/images/Up_Up.png')]
public static var Up_Up:Class;
В разделе ActionScript моего приложения я использую эти классы при динамическом создании кнопок:
var buttonHBox:HBox = new HBox();
var closeButton:Button = new Button();
var upButton:Button = new Button();
var downButton:Button = new Button();
closeButton.setStyle("icon", SimpleWLM.CloseWindowUp);
buttonHBox.addChild(closeButton);
upButton.setStyle("icon", SimpleWLM.Up_Up);
buttonHBox.addChild(upButton);
downButton.setStyle("icon", SimpleWLM.Down_Up);
buttonHBox.addChild(downButton);
Ошибка в кавычках, вокруг @Embed кавычек быть не должно:
closeButton.setStyle("icon", @Embed(source = "images/closeWindowUp.png"));
Для меня это просто дает следующую ошибку: 1041: Attributes are not callable.. Хотя я использую Flex 3.
Вы можете использовать этот вариант динамической смены значка кнопки.
Вставьте свои значки
[Embed(source='com/images/play.png')]
[Bindable]
public var imagePlay:Class;
[Embed(source='com/images/pause.png')]
[Bindable]
public var imagePause:Class;
Использование одной кнопки для переключения воспроизведения и паузы видео
private function playpause():void
{
if (seesmicVideo.playing)
{
seesmicVideo.pause();
btn_play.setStyle("icon",imagePlay);
}
else
{
seesmicVideo.play();
btn_play.setStyle("icon",imagePause);
}
}
Мне удалось использовать значок на моей кнопке со следующим кодом:
<mx:Button id = "buttonPlay" label = "Play" click = "playButtonClicked();" enabled = "false" icon = "@Embed('./play.png')"/>
файл play.png находится в той же папке, что и файл mxml.
Я использую Flash Builder версии 4.6.
Редактировать: вопрос касался ActionScript, а не MXML, но я оставляю этот ответ только для справки.
Добавление отсутствующей закрывающей кавычки / скобки не имело никакого значения. Я по-прежнему получаю сообщение об ошибке выполнения. Ошибка принуждения типа: невозможно преобразовать «@Embed (source = 'images / closeWindowUp.png')» в класс. Я вызываю buttonHBox.addChild (closeButton); Это то, что вы имеете в виду, говоря «добавить к сцене»?