flex
  • actionscript-3
  • 2008-11-18 12 views 7 likes 
    7

    Quiero crear botones con íconos en Flex dinámicamente usando Actionscript.Crear un botón con un ícono en actionscript

    yo probamos este, sin éxito:

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

    Respuesta

    11

    encontré una respuesta que funciona para mí. En mi archivo .mxml, puedo crear clases para los iconos voy a utilizar:

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

    en la parte de ActionScript de mi solicitud, utilizo estas clases al crear dinámicamente botones:

    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); 
    
    0

    Estoy asumiendo que va a añadir a la etapa?

    Además, creo que a su Embed le falta una cita cerrada/paren.

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

    debería ser:

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

    Agregando la cita de cierre faltante/paren no hizo ninguna diferencia. Todavía obtengo un error de tiempo de ejecución Error de tipo de coerción: no se puede convertir "@Embed (source = 'images/closeWindowUp.png')" en Class. llamo buttonHBox.addChild (closeButton); ¿Es esto lo que quiere decir con agregar al escenario? –

    2

    el error es en las citas, no debe haber comillas alrededor de la @Embed:

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

    Para mí, esto da el siguiente error: '1041: los atributos no se pueden llamar. Estoy usando Flex 3, sin embargo. – edam

    3

    se puede usar esta opción de cambio dinámico del icono del botón.

    incrustar el iconos

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

    El uso de un botón para cambiar el juego y la pausa de vídeo

    private function playpause():void 
    { 
        if (seesmicVideo.playing) 
        { 
         seesmicVideo.pause(); 
         btn_play.setStyle("icon",imagePlay); 
        } 
        else 
        { 
         seesmicVideo.play(); 
         btn_play.setStyle("icon",imagePause); 
        } 
    }   
    
    1

    pude usar un icono en mi botón con el siguiente código:

    <mx:Button id="buttonPlay" label="Play" click="playButtonClicked();" enabled="false" icon="@Embed('./play.png')"/> 
    

    el archivo play.png está en la misma carpeta del archivo mxml.

    Estoy usando Flash Builder versión 4.6.

    Editar: la pregunta era sobre ActionScript y no MXML, pero dejo esta respuesta solo para referencia.

    Cuestiones relacionadas