2011-09-13 4 views
0

J'ai ce code, mais le style n'est pas appliqué. J'ai vu articles on the web où cela devrait fonctionner. Des idées?Flex Alert.styleName ne fonctionne pas pour moi

var alert:Alert = Alert.show("You have not saved you changes.\n\nWould you like to save now?", 
          "Save Answers?", 
          Alert.NO | Alert.YES | Alert.CANCEL, 
          this, 
          handleUnsavedChanges, 
          null, 
          Alert.YES); 

alert.styleName = "alertStyle"; 

Toute tentative de définir le style en utilisant la classe Alert dans mon stylesheet semble fonctionner, mais émet un avertissement. Je voudrais trouver le moyen "approuvé".

BTW, c'est Flex 3.

PS - J'ai aussi essayé des trucs comme

alert.setStyle("backgroundColor", "0x00FF00"); 

mais cela ne semble pas fonctionner non plus. J'ai l'impression que je dois appeler quelque chose pour dire à la boîte d'alerte de se redessiner, mais je ne sais pas comment.

Répondre

1

Vous pouvez créer une classe personnalisée afin d'utiliser css spécifique:

public class CustomAlert extends Alert {} 

... Ensuite, dans le CSS

CustomAlert 
{ 
    background-color: #00FF00; 
} 

Ou un petit exemple plus compliqué:

 import mx.styles.StyleManager; 
     private function init():void { 
      alertCSS = StyleManager.getStyleDeclaration("Alert"); 
     } 

     private function showAlert(color:Object):void { 
      alertCSS.setStyle("backgroundColor", "0x00FF00"); 
      alert = Alert.show("The quick brown fox..."); 
     } 
+0

Deux commentaires: 1.) Je ne veux pas styler toutes les alertes, juste celle-ci en particulier. 2.) J'ai déjà mentionné que cette approche produit un avertissement de compilateur (les sélecteurs de type CSS ne sont pas supportés dans les composants: 'Alert') – Vinnie

+0

Désolé, j'ai mis à jour ma réponse – Joe

+0

Ceci est une erreur "id10t". Pour une raison quelconque, le code pour créer la même boîte d'alerte exacte est dupliqué à plusieurs endroits. Ne m'attendant pas à cela, j'ai essayé de styler le premier auquel je suis arrivé (bien sûr, c'était le mauvais). Quoi qu'il en soit, il semble que toutes ces approches fonctionnent - même en définissant le styleName CSS sur la boîte d'alerte déjà créer. – Vinnie