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

    Ich möchte Schaltflächen mit Symbolen in Flex dynamisch mit Actionscript erstellen.Erstellen Sie eine Schaltfläche mit einem Symbol in ActionScript

    Ich versuchte dies, ohne Erfolg:

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

    Antwort

    11

    Ich fand eine Antwort, die für mich funktioniert. In meiner .mxml Datei, ich erstellen Klassen für die Symbole verwende ich:

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

    Im Action Teil meiner Anwendung verwende ich diese Klassen bei der dynamischen Schaltflächen erstellen:

    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

    Ich gehe davon aus Sie hinzufügen es auf die Bühne?

    Auch ich denke, Ihre Einbettung fehlt eine enge Zitat/paren.

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

    sollte sein:

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

    Das Hinzufügen des fehlenden nahen Zitats/Parens machte keinen Unterschied. Ich bekomme immer noch einen Laufzeitfehler Type Coercion fehlgeschlagen: kann "@Embed (source = 'images/closeWindowUp.png')" nicht in Klasse konvertieren. Ich rufe buttonHBox.addChild (closeButton); Ist das, was du meinst, zu Phase hinzufügen? –

    2

    Der Fehler ist in Anführungszeichen, sollte es keine Anführungszeichen gesetzt werden um die @Embed:

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

    Für mich gibt dies nur den folgenden Fehler: '1041: Attribute sind nicht aufrufbar.'. Ich benutze jedoch Flex 3. – edam

    3

    Sie diese eine Möglichkeit, dynamische Änderung der Button-Symbol verwenden können.

    Ihre Symbole einbetten

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

    Mit einer Taste Wiedergabe und Pause des Videos wechseln

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

    konnte ich ein Symbol in meiner Schaltfläche mit dem folgenden Code verwenden:

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

    Die Datei play.png befindet sich im selben Ordner der mxml-Datei.

    Ich verwende Flash Builder Version 4.6.

    Bearbeiten: Die Frage war über ActionScript und nicht MXML, aber ich lasse diese Antwort nur als Referenz.

     Verwandte Themen

    • Keine verwandten Themen^_^