2010-08-27 9 views
2

J'utilise Flex 4 et je rencontre des problèmes en affichant une simple boîte d'alerte. La boîte d'alerte apparaît, mais le texte semble être de la même couleur que l'arrière-plan. Je sais que le texte est là parce que si je souris dans la fenêtre de la boîte d'alerte à peu près où le texte serait, je peux voir le curseur changer. Et quand je double-clique et copie-colle dans le bloc-notes, je peux voir le message. Mais le message, le texte du bouton, le titre de la boîte de message n'apparaissent pas.La boîte de dialogue d'alerte ne montre pas le texte en flex 4

Le code correspondant dans mon projet est le suivant

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
xmlns:s="library://ns.adobe.com/flex/spark" layout="absolute" 
initialize="{initialiseFlex()}" backgroundGradientAlphas="[1.0, 1.0]" 
backgroundGradientColors="[#FFFFFF, #FFFFFF]" 
xmlns:ns2="keyboard.*" xmlns:ns1="com.adobe.flex.extras.controls.*" 
minHeight="864" minWidth="1024" verticalScrollPolicy="off" width="1024"> 

<mx:Script> 
      <![CDATA[ 
        import mx.binding.utils.BindingUtils; 
        import flash.net.sendToURL; 
        import mx.utils.URLUtil; 
        import mx.managers.IBrowserManager; 
        import mx.managers.BrowserManager; 
        import mx.controls.Alert; 

      ]]> 
    </mx:Script> 

    <mx:Style> 
      Alert { 
        titleStyleName: "alertTitle"; 
        message-style-name: "alertMessage"; 
        buttonStyleName: "alertButton"; 
        background-color: #ffffff; 
        header-colors : #F4800E, #F4800E; 
        border-color : #F4800E; 
        corner-radius :6; 
        font-anti-alias-type:advanced; 
      } 
      .alertMessage { 
        fontSize: 20; 
        color: black; 

      } 
    </mx:Style> 

<mx:Button click="Alert.show('From inside mxml')" 
enabled="false" x="580" y="440" label="Sign Out" id="btnSignOut" fontSize="24" 
labelPlacement="right" color="#F4800E" /> 

J'ai essayé diverses choses telles que la suppression de toutes les informations de style (la zone d'alerte apparaît boîte comme bleutée, mais encore une fois le texte est la même couleur et donc invisible). J'ai enlevé tous les backgroundgradientcolos et alphas de la balise d'application. etc etc. J'ai changé le ".alertMessage" en "alertMessage" dans la partie style. Mais peu importe, le texte du message, le titre et le texte du bouton dans la boîte d'alerte sont toujours invisibles. Je sais que le texte est là, comme je l'ai dit, parce que je peux passer la souris sur la boîte d'alerte et voir le curseur changer, puis double-cliquer et copier/coller le texte.

Je soupçonne que cela est lié à un autre problème que j'ai dans le même projet décrit ici Autocomplete in Flex 4.0 not displaying items in dropdown list

Ces deux contrôles semblent avoir un texte qui est invisible, comme si la couleur du texte est défini de la même comme l'arrière-plan. J'ai essayé de rechercher d'autres fichiers de style, des fichiers de thème ou quelque chose dans le projet qui serait responsable de la définition de ces couleurs. Mais n'a pas pu trouver. Le projet est relativement simple avec un fichier mxml, 3 ".as", dont l'un a une logique de validation et l'autre une attente. Le troisième a un code de logique métier, mais rien à voir avec les couleurs ou les thèmes. Les autres contrôles dans le projet - les zones de texte, les boutons, datagridsl, les panneaux fonctionnent tous très bien. C'est la boîte de saisie semi-automatique et la boîte d'alerte qui semblent ne pas vouloir afficher le texte qui est là.

Des idées ou des conseils sur ce qui pourrait être la cause du problème?

+0

Quelle est la couleur de fond de la boîte d'alerte - est-ce blanc? Essayez de changer ce noir en '# 000000'. Si cela ne vous aide pas, essayez d'ajouter 'Text {color: # FF0000;} TextInput {color: # FFFF00;} Étiquette {color: # 00FFFF}' à la balise de style dans Application et voyez s'il y a une différence. – Amarghosh

+0

Non. Rien de cela n'a fait de différence. Changer la couleur de fond à # 000000 a changé l'arrière-plan dans la boîte de message noir, mais le texte n'était toujours pas visible. Il semble avoir changé en noir aussi, parce que c'est toujours là selon ma souris. – Chaitanya

Répondre

1

Ok, tourne le projet était un projet Flex 3 qui a été importé dans Flex 4. Il travaille là où il ne tombe en panne et où il ne fonctionne pas. J'ai créé un projet Flex 4 simple avec une boîte d'alerte et cela a fonctionné. J'ai lentement déplacé tout mon code à travers ce projet et cela a fonctionné. Cela m'a donné un avertissement à propos de la balise styles de ne pas pouvoir utiliser ou quelque chose comme ça. J'ai juste enlevé toutes les étiquettes de style et cela a fonctionné très bien. Ça ne se ressemble pas, alors je dois jouer avec un peu plus, mais au moins le texte est apparu. Donc, quelque chose à faire avec les thèmes et le compilateur Flashbuilder en les utilisant au moment de la compilation. Tout ce que je dois dire, c'est quel outil de merde. Si l'importation n'a pas fonctionné, elle aurait échoué complètement il y a longtemps. J'ai recherché et cherché des fichiers de projets ou des fichiers de code qui étaient liés à css ou des styles ou des thèmes. Mais il est clair que j'utilisais quelque chose qui était indépendant de mon projet pour contrôler certaines petites parties de mon projet. Les paramètres des contrôles dans mon projet dépendaient essentiellement de certains facteurs environnementaux/idéaux. Quelle douleur à déboguer.

Merci pour l'aide si les gars.

1

Je pense que l'arrière-plan et la couleur du texte sont blancs pour votre alerte.

essayer

Alert 
{ 

     color: #000000; 

     titleStyleName: "alertTitle"; 
     message-style-name: "alertMessage"; 
     buttonStyleName: "alertButton"; 
     background-color: #ffffff; 
     header-colors : #F4800E, #F4800E; 
     border-color : #F4800E; 
     corner-radius :6; 
     font-anti-alias-type:advanced; 
} 
+0

Non. Pas de changement. – Chaitanya

+0

Si cela aide, la boîte de message est légèrement translucide. Lorsque je le déplace autour d'un texte ou d'une image, je peux voir le texte et les images derrière. – Chaitanya

+0

J'ai remarqué que sous l'explorateur de paquets il y a le nœud Flex 4.1, il y a sparkskins.swc avec le paquet par défaut et le paquetage mx.skins.spark. Je ne sais pas ce qu'ils font ou s'ils affectent les styles. – Chaitanya

1

Merci beaucoup pour une telle question, votre réponse a également été très utile - il a montré un moyen de creuser. Après presque 8 heures de creusement j'ai réussi à trouver une solution de plus pour ce problème.

Ce texte "invisible" semble être un problème de migration de thème incorrect (Halo -> Spark).

1) Ce problème peut être évité si vous n'utilisez PAS l'argument "-compatibility-version = 3.0" (ou l'attribut "Utiliser le mode de compatibilité Flex 3" dans Flex Builder).

2) Il peut y avoir des erreurs dans votre projet Flex 3 concernant les styles, et elles sont corrigées en changeant le thème de projet par défaut en "Halo" dans "Projet-> Propriétés-> Thème Flex".

+0

Ah. Intéressant. Je ne suis pas un expert en flex ou flash. Je viens du monde .Net. C'était une application dont j'ai hérité sur mon nouveau projet pour faire quelques corrections rapides. Je me souviens d'avoir moins d'options de thème d'options dans le projet prémigré (je ne sais pas s'il y avait une étincelle). Le projet de test que j'ai mis en place avait beaucoup plus d'options de thème. – Chaitanya

+0

Je commence juste à apprendre Flex moi-même. Quoi qu'il en soit, les deux solutions fonctionnent :) – Wiseman

1

J'ai eu le même problème et la réponse de Wiseman a fonctionné pour moi. J'ai remarqué que l'option de compilation "Utiliser le moteur de texte Flash dans les composants MX" doit également être activée.

1

J'avais le même problème après l'intégration de la famille de polices Arial dans mon application. Soudain Alerts et tous les autres textes de composants Flex (comme les info-bulles) nous sommes vides. Cela m'a pris un moment pour trouver cela après avoir essayé toutes sortes de solutions pas si élégantes.

Je n'avais même pas activé le mode "Utiliser le mode de compatibilité". Tout a fonctionné à nouveau après avoir coché "Utiliser le moteur de texte Flash dans les composants MX". Je n'aurais jamais essayé ça. D'après ce que je peux dire, l'Alerte et le reste des composants Flex utilisent maintenant la police intégrée pour afficher les textes, ce qui était le but recherché. Je suppose que cela a quelque chose à voir avec le nouveau cadre de mise en page de texte qu'ils ont utilisé pour Flex4 combiné avec les polices intégrées.

0

J'ai eu ce problème. La solution de Javier Alvarez a fonctionné pour moi - Mais le problème lui-même est arrivé seulement quand j'ai utilisé Right-To-Left lay

Questions connexes