IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH 8] TextField "déroulant" - Bug affichage


Sujet :

Flash

  1. #1
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut [FLASH 8] TextField "déroulant" - Bug affichage
    Salut,

    Jeu concours : Trouvé le bug
    Récompense : Ma reconnaissance, car je deviens fou

    Mon problème : Je dois faire apparaitre un texte lettre après lettre. Jusque là pas de problème. Le problème vient du fait que ce texte doit activer le html pour la mise en forme. Et là, pb.
    Si je crée mon champs texte dynamiquement , cela ne marche pas : l'affichage ne correspond pas à la demande. Si le textField est créé dans l'IDE cela marche.
    Une fois que l'affichage a buggué, impossible de le refaire marcher même en forçant à la fin le htmlText

    Voilà mon code (La fonction recontituant l'html peut - doit même - être améliorée , optimisée mais là n'est pas la question. Enfin je crois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    /* Fonction qui coupe une chaine html qui reconstitue la struture html pour qu'elle soit cohérent */
    /* sText_  : Texte à couper */
    /* nIndex_ : (nIdex_)ieme caractère de la chaine où il faut couper la chaine */
     
    function cutAt(sText_:String , nIndex_:Number):String {
    	var sTemp:String = (sText_.charAt(0) == "<") ? sText_ : ("<p>"+sText_+"</p>");
     
    	var aOpened:Array = new Array();
     
    	var bInTag:Boolean = false;
    	var bOpened:Boolean = false;
    	var nCount:Number = 0;
     
    	var sTag:String 	= "";
    	var sWord:String 	= "";
    	var sResult:String 	= "";
     
    	for(var i:Number = 0; i < sTemp.length; i++) {
    		var sChar:String = sTemp.charAt(i);
     
    		if(nCount < nIndex_) {
    			switch(sChar) {
    				case "<" :
    					sResult += sWord;
    					sWord = "";
    					sTag = "";
    					bInTag = true;
    					bOpened = (sTemp.charAt(i+1) != "/");
    					break;
    				case ">" :
    					if(bOpened) {
    						if(sTag.toUpperCase() != "BR") {
    							var aTag:Array = sTag.split(" ");
    							aOpened.unshift(aTag[0].toString());
    						}
    					}
    					else {
    						var n:Number = 0;
    						var cpt:Number = 0;
    						while((n == 0) && (aOpened.length > 0)) {
    							cpt++;
    							var sClosedTag:String = sTag.substr(1, sTag.length-1);
    							if(aOpened[n].toString() == sClosedTag) {
    								aOpened.shift();
    								n++;
    							} else {
    								aOpened.shift();
    							}
    						}
    					}
    					bInTag = false;
    					sResult += "<" + sTag + ">";
    					break;
    				default :
    					if(bInTag) {
    						sTag += sChar;
    					} else {
    						sWord += sChar;
    						nCount++;
    					}
    					break;
    			}
    		} else {
    			sResult += sWord;
    			i = sTemp.length;
    			while (aOpened.length != 0) {
    				var sCurrentTag:String = aOpened[0].toString()
    				if(sCurrentTag.toUpperCase() != "BR") {
    					sResult += "<" + aOpened[0] + "/>";
    				} else {
    					sResult += "</" + aOpened[0] + ">";
    				}
    				aOpened.shift();
    			}
    		}
    	}
    	return sResult;
    }
     
    /* Retoune le nombre de caractères "non html" de la chaine */
    function getNoHtmlCharactersNumber(sText_):Number {
    	var sTemp:String = (sText_.charAt(0) == "<") ? sText_ : ("<p>"+sText_+"</p>");
    	var bInTag:Boolean = false;
    	var nResult:Number = 0;
     
    	for(var i:Number=0; i<sTemp.length; i++) {
    		var sChar:String = sTemp.charAt(i);
    		switch (sChar) {
    			case "<" :
    				bInTag = true;
    				break;
    			case ">" :
    				bInTag = false;
    				break;
    			default :
    				if(!bInTag) nResult++;
    				break;
    		}
    	}
    	return nResult;
    }
     
     
    var s:String = "<p>Mais pourquoi cela <b><i>ne</i> marche <i>pas</i></b> ???<br>Est-ce un <b><u>bug</u><b> ?</p>";
     
    var tf:TextField = this.createTextField("tf", 0, 20, 20, 200, 50);
    var tfMax:TextField = this.createTextField("tfMax", 1, 20, 100, 200, 50);
    tf.html = tfMax.html = true;
    tf.multiline = tfMax.multiline = true;
     
    var nCpt:Number = 0;
    var nCptMax:Number = getNoHtmlCharactersNumber(s);
     
    this.onEnterFrame = function() {
    	tf.htmlText = cutAt(s, ++nCpt);
    	if(nCpt == nCptMax) {
    		delete this.onEnterFrame;
    		tfMax.htmlText 	= cutAt(s, nCptMax);
    		tf.htmlText 	= tfMax.htmlText;
    	}
    }
    Quelqu'un peut m'aider ?
    d'avance
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  2. #2
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    ouais le html est tout un problème, surtout avec les champs de texte dynamiques Ensuite ton code te retourne bien les bonnes valeurs ? Et ca te donne quoi en visuel ?

    @++
    Libzippp (C++)
    Lost in AStorm

  3. #3
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    Hello,
    je regarde ça chez moi ce soir et te dis quoi
    si je trouve

  4. #4
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Citation Envoyé par thecaptain
    Salut,

    ouais le html est tout un problème, surtout avec les champs de texte dynamiques Ensuite ton code te retourne bien les bonnes valeurs ? Et ca te donne quoi en visuel ?

    @++
    Sauf si je suis complétement aveuglé (ca arrive qd on a le nez dedans depuis trop longtemps), le html est bien formé
    En visuel, pendant le défilement le style elle s'applique sur tout le texte (et ce n'est pas forcement celui que j'attendant ). Une fois le bug constaté, impossible de refaire marcher le textfield, même lui donnant un autre code html, en le vidant ( ="") puis en le reremplissant.

    Citation Envoyé par jean philippe
    Hello,
    je regarde ça chez moi ce soir et te dis quoi
    si je trouve



    Ps: Je mets ci-joint mes fichiers de test
    Fichiers attachés Fichiers attachés
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  5. #5
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    re hello!
    bon je sais pas si ça te conviendra, mais moi je ferai ça comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    texte = "<p>Mais pourquoi cela <b><i>ne</i> marche <i>pas</i></b> ???<br>Est-ce un <b><u>bug</u><b> ?</p>";
    var max:Number = length(texte);
    var i:Number = 1;
    joue = function () {
    	var tf:TextField = this.createTextField("tf", 1, 50, 100, 200, 50);
    	tf.html = true;
    	tf.multiline = true;
    	if (i<=max) {
    		tf.htmlText = substring(texte, 1, i);
    		i++;
    	} else {
    		clearInterval(intervalId);
    		tf.htmlText = "<p>Mais pourquoi cela <b><i>ne</i> marche <i>pas</i></b> ???<br>Est-ce un <b><u>bug</u><b> ?</p>";
    	}
    };
    intervalId = setInterval(this, "joue", 50);

  6. #6
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    texte = "<p>Mais pourquoi cela <b><i>ne</i> marche <i>pas</i></b> ???<br>Est-ce un <b><u>bug</u><b> ?</p>";
    var max:Number = length(texte);
    var i:Number = 1;
    joue = function () {
    	var tf:TextField = this.createTextField("tf", 1, 50, 100, 200, 50);
    	tf.html = true;
    	tf.multiline = true;
    	if (i<=max) {
    		tf.htmlText = substring(texte, 1, i);
    		i++;
    	} else {
    		clearInterval(intervalId);
    		tf.htmlText = texte;
    	}
    };
    intervalId = setInterval(this, "joue", 50);

  7. #7
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut

    Merci pour cette réponse.
    J'en déduis donc que c'est bien un bug
    je vais essayer de l'adapter pour que cela marche dans mon projet.

    Merci encore, je vous tiens au courant
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  8. #8
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    Citation Envoyé par freegreg
    J'en déduis donc que c'est bien un bug
    pourquoi dis tu que c'est un bug ???
    le code ci-dessus fonctionne parfaitement

  9. #9
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Citation Envoyé par jean philippe
    pourquoi dis tu que c'est un bug ???
    le code ci-dessus fonctionne parfaitement
    Lequel ? Le mien fonctionne ?
    Le fait de ne pouvoir actualiser le Textfield qu'à la condition de d'écraser le Textfield par un nouveau me semble relever du bug, non ?

    Sinon ton code fonctionne parfaitement et je t'en remercie
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  10. #10
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    Citation Envoyé par freegreg
    Lequel ? Le mien fonctionne ?
    non
    Citation Envoyé par freegreg
    Lequel ? Le mien fonctionne ?
    Le fait de ne pouvoir actualiser le Textfield qu'à la condition de d'écraser le Textfield par un nouveau me semble relever du bug, non ?
    moi ça me parait logique
    Citation Envoyé par freegreg
    Sinon ton code fonctionne parfaitement et je t'en remercie
    de rien

  11. #11
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    moi ça me parait logique
    Je suis pas sûr de comprendre, je ne dois pas être encore bien réveillé
    Chaque fois que tu écris dan un TextField, tu l'écrases par un nouveau ?

    Si cela n'avait pas été du html, tu aurais fait pareil ? Tu n'aurais pas créé ton textfield en dehors de ta fonction ?
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  12. #12
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    Citation Envoyé par freegreg
    Si cela n'avait pas été du html, tu aurais fait pareil ?
    non biensur ! mais ton cas c'est particulier avec l'effet défilant
    mais en reflechissant je crois que l'on peut trouver une solution plus "propre"
    en broadcastant le textfield avec un onChanged
    J'essaierai ce weekend et je vous dirai quoi

  13. #13
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    non biensur ! mais ton cas c'est particulier avec l'effet défilant
    tu me rassures
    mais en reflechissant je crois que l'on peut trouver une solution plus "propre"
    en broadcastant le textfield avec un onChanged
    J'essaierai ce weekend et je vous dirai quoi
    Merci
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

Discussions similaires

  1. bug affichage flash
    Par beesign dans le forum Flash
    Réponses: 0
    Dernier message: 12/07/2011, 18h22
  2. Menu déroulant, bug affichage IE 7
    Par Okiyah dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 02/03/2010, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo