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

    Chcę utworzyć przyciski z ikonami w Flex dynamicznie za pomocą Actionscript.Utwórz przycisk z ikoną w actionscript

    Próbowałem to, ale bez powodzenia:

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

    Odpowiedz

    11

    znalazłem odpowiedź, która pracuje dla mnie. W moim pliku .mxml, tworzę zajęcia dla ikon użyję:

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

    w części ActionScript mojej aplikacji, używam tych klas podczas dynamicznego tworzenia przycisków:

    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

    Ja zakładając, że dodanie go na scenę?

    Sądzę też, że w Twoim pliku docelowym brakuje dokładnego cytatu/paren.

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

    powinno być:

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

    Dodanie brakującego cytatu/paren'a nie miało żadnego znaczenia. Nadal dostaję błąd runtime Niepoprawna typacja: nie można przekonwertować "@Embed (source = 'images/closeWindowUp.png')" na Class. Zadzwonię pod numer buttonHBox.addChild (closeButton); Czy to masz na myśli, dodając do sceny? –

    2

    błędu jest w cudzysłowie, nie powinno być żadnych cytatów wokół @Embed:

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

    Dla mnie, po prostu daje następujący błąd: '1041: Atrybuty nie są wywoływalne. Używam jednak Flexa 3. – edam

    3

    można użyć tej jednej opcji dynamicznej zmiany przyciskiem ikonę.

    osadzić ikon

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

    za pomocą jednego przycisku, aby włączyć play i pause wideo

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

    byłem w stanie wykorzystać ikonę w moim przycisku z następującego kodu:

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

    plik play.png znajduje się w tym samym folderze pliku mxml.

    Używam Flash Builder w wersji 4.6.

    Edytuj: pytanie dotyczyło ActionScript, a nie MXML, ale tę odpowiedź pozostawiam tylko w celach informacyjnych.

    Powiązane problemy