views:

5116

answers:

5

I want to create buttons with icons in Flex dynamically using Actionscript.

I tried this, with no success:

var closeButton = new Button();
closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png");
A: 

I'm assuming you're adding it to the stage?

Also, I think your Embed is missing a close quote / paren.

closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png");

should be:

closeButton.setStyle("icon", "@Embed(source='images/closeWindowUp.png')");
HanClinto
Adding the missing close quote/paren didn't make any difference.I still get a runtime errorType Coercion failed: cannot convert "@Embed(source='images/closeWindowUp.png')" to Class.I callbuttonHBox.addChild(closeButton);Is this what you mean by add to stage?
Kevin Beck
+3  A: 

I found an answer that works for me. In my .mxml file, I create Classes for the icons I will use:

// 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;

In the Actionscript portion of my application, I use these classes when dynamically creating buttons:

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);
Kevin Beck
+2  A: 

The error is in the quotes, there should be no quotes around the @Embed:

closeButton.setStyle("icon", @Embed(source="images/closeWindowUp.png"));
Theo
A: 

whom are u create a advanced script button

A: 

You can use this one option of dynamic change of button icon

//    embed your icons
[Embed(source='com/images/play.png')]
[Bindable]
public var imagePlay:Class; 

[Embed(source='com/images/pause.png')]
[Bindable]
public var imagePause:Class;

//    using one button to toggle play and pause of video
private function playpause():void
{
    if (seesmicVideo.playing)
    {
        seesmicVideo.pause();
        btn_play.setStyle("icon",imagePlay);
    }
    else
    {
        seesmicVideo.play();
        btn_play.setStyle("icon",imagePause);
    }
}        
Vadim Slutsky