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

ActionScript 3 Discussion :

Scroll TextField toujours en bas


Sujet :

ActionScript 3

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut Scroll TextField toujours en bas
    Bonjour,

    J'essai désespérément de garder la scrollBar d'un textField vers bas sur un petit chat.

    Voila mon code :
    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
    function Vrecharge(e:Event) {
     
    	var urLLoader:URLLoader = new URLLoader();
    	var urLRequest:URLRequest=new URLRequest("recharge.php");
    	var urLVariable:URLVariables = new URLVariables();
    	urLVariable.dest = dest ;
    	urLRequest.data = urLVariable ;
    	urLRequest.method=URLRequestMethod.POST;
    	urLLoader.load(urLRequest);
    	urLLoader.addEventListener(Event.COMPLETE, charge);
     
    	function charge(e:Event):void {
     
    		if ((e.target as URLLoader).data == "1") {
    			canal = conteneurSon.play();
    			recharge();
    		}
    	}
    }
     
    // Gestion du scroll
    function scrol() {
    	lescroll.scrollTarget=discussion;
    	discussion.scrollV = discussion.maxScrollV;
    }
     
    // XML rechargement
    function recharge(e:Event=null) {
     
    	var chargement:URLLoader = new URLLoader();
    	var fichier:URLRequest=new URLRequest("convers/"+IDs+".xml?nocache=" + new Date().getTime());
    	fichier.requestHeaders.push( new URLRequestHeader("pragma", "no-cache") );
    	chargement.addEventListener(Event.COMPLETE, chargementComplet);
    	chargement.load(fichier);
     
    	function chargementComplet(e:Event):void {
    		var messages:XML=new XML(e.target.data);
    		var NbMessage:XMLList=messages.elements();
    		discussion.text="";
    		var Nb:int = NbMessage.length() ;
    		var i:Number = 1 ;
    		for each (var DiscussionM:XML in NbMessage) {
    			discussion.htmlText+="<b>"+DiscussionM.@pseudo+" dit :</b>\n";
    			discussion.appendText(DiscussionM +"\n\n");
    		    discussionDate.text = "Date et heure du dernier message : "+DiscussionM.@date ;
    			if(i == Nb){ scrol(); i = 1 ; } else { i++ ; }
    		}
    	}
    }
     
    function envoi() {
    	if (mess.text!="") {
    		if (discussion.text!="") {
    			discussion.htmlText+="<b>"+pseudo+" dit :</b>\n";
    			discussion.appendText(mess.text+"\n\n");
    			var urlLoader:URLLoader = new URLLoader();
    			var urlRequest:URLRequest=new URLRequest("conver.php5");
    			var urlVariables:URLVariables = new URLVariables();
    			urlVariables.fichier = IDs ;
    			urlVariables.pseudo = pseudo ;
    			urlVariables.dest = dest ;
    			urlVariables.messages = mess.text ;
    			urlRequest.data = urlVariables ;
    			urlRequest.method=URLRequestMethod.POST;
    			urlLoader.load(urlRequest);
    		} else {
    			discussion.text=mess.text;
    		}
    		mess.text="";
    	}
    	scrol();
    }
     
    function envoiE(evt:KeyboardEvent):void {
    	if (evt.keyCode==Keyboard.ENTER) {
    		envoi();
    	}
    }
    function envoiC(e:Event):void {
    	envoi();
    }
     
    recharge();
     
    bt_envoi.addEventListener(MouseEvent.CLICK, envoiC);
    mess.addEventListener(KeyboardEvent.KEY_DOWN, envoiE);
    Sa fonctionne très bien avec la fonction envoi(); mais par contre rien avec recharge(); ...

    Quelqu'un aurait une idée d'ou vient l'erreur ?

  2. #2
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Salut, vu comme ça je ne vois pas non plus désolé

    apparemment c'est scrol() qui fait baisser ta barre et si recharge() ne le fait pas c'est tout simplement qu'il ne call pas scrol().
    alors tu peux essayer de trouver pourquoi scrol() n'est pas call, sinon essaye de rajouter un scrol() à la fin de recharge() pour être sur qu'il baisse la scrollbar à chaque fois.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Merci pour ta réponse.

    Je viens d'essayer avec scrol(); à la fin de la function recharge malheureusement rien sa reste en haut.

    La fonction scrol() et pourtant bien lancé je viens de faire un trace pour vérifier.

    Je ne comprend pas du tout la

  4. #4
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Hmm, essaye aussi de la mettre à la fin de chargementComplet dans recharge pour vérifier

    cette partie me trouble personnellement je cerne pas l'utilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(i == Nb){ scrol(); i = 1 ; } else { i++ ; }
    quel est l'objectif ?

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    toujours le même résultat

  6. #6
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Ah dommage, ça aurait été plus simple comme ça lol

    Je ne sais pas trop alors désolé..

    J'aurai peut être une idée farfelue, ça viendrait peut être alors de la fonction scrol, même si ça fonctionne avec envoi(), on peux imaginer que pour recharge() le maxScrollV est égal à rien.
    essaye de faire un trace sur le discussion.maxScrollV pour voir si il est vide à la première utilisation.
    Si c'est le cas, peut être que set lescroll.scrollTarget=discussion en dehors de la fonction scrol() et avant le recharge() pourrait résoudre le souci.
    Toute façon je pense pas que tu es besoin de re-set le scrollTarget à chaque fois.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Pareil sa me retourne 70 mais la scrollBar est en haut --'

    J'ai essayé une technique un peu plus barbare qui est de mettre un timer qui lance en continu la fonction scrol() et la sa marche ( sa me rassure lol )

    Tu trouve barbare aussi ? Ou sa se fait souvent de mettre des timer a 0 ms sans limite ?

    EDIT : Je suis idiot, la scroll est en bas mais les utilisateurs ne peuvent plus la remonter a moins de rester cliqué dessus ... Pas génial

  8. #8
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Y'a surement un truc plus simple mais bon, si le timer passe, autant s'en servir en attendant peut être de trouver le vrai problème.
    Au lieu de le repeter en boucle, tu peux peut être le lancer une seule fois décalé par rapport à la fonction recharge()
    Peut être même plusieurs fois mais pas à l'infini, mais bon ouai ça fait un peu barbare quand même c'est sûr mais parfois quand on arrive pas a faire une incision au scalpel faut savoir trancher à la hache, sinon on pête un câble

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    lol voila on se comprend bien. Le temps de trouver mieux sa fera l'affaire

    Donc voila le nouveau code, j'ai juste ajouté le timer et un écouteur de manière que l'on puisse quand même scroller vers le haut
    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
    // timer rechargement
    var timerR:Timer=new Timer(3000);
    timerR.addEventListener(TimerEvent.TIMER, Vrecharge);
     
    var timer:Timer=new Timer(0);
    timer.addEventListener(TimerEvent.TIMER, scrol);
     
    timerR.start();
    timer.start();
     
    function Vrecharge(e:Event) {
     
    	var urLLoader:URLLoader = new URLLoader();
    	var urLRequest:URLRequest=new URLRequest("recharge.php");
    	var urLVariable:URLVariables = new URLVariables();
    	urLVariable.dest = dest ;
    	urLRequest.data = urLVariable ;
    	urLRequest.method=URLRequestMethod.POST;
    	urLLoader.load(urLRequest);
    	urLLoader.addEventListener(Event.COMPLETE, charge);
     
    	function charge(e:Event):void {
     
    		if ((e.target as URLLoader).data == "1") {
    			canal = conteneurSon.play();
    			recharge();
    		}
    	}
    }
     
    // Gestion du scroll
    function scrol(e:Event=null) {
    	lescroll.scrollTarget=discussion;
    	discussion.scrollV = discussion.maxScrollV;
    }
     
    // XML rechargement
    function recharge(e:Event=null) {
     
    	var chargement:URLLoader = new URLLoader();
    	var fichier:URLRequest=new URLRequest("convers/"+IDs+".xml?nocache=" + new Date().getTime());
    	fichier.requestHeaders.push( new URLRequestHeader("pragma", "no-cache") );
    	chargement.addEventListener(Event.COMPLETE, chargementComplet);
    	chargement.load(fichier);
     
    	function chargementComplet(e:Event):void {
    		timer.start();
    		var messages:XML=new XML(e.target.data);
    		var NbMessage:XMLList=messages.elements();
    		discussion.text="";
    		var Nb:int = NbMessage.length() ;
    		var i:Number = 1 ;
     
    		for each (var DiscussionM:XML in NbMessage) {
    			discussion.htmlText+="<b>"+DiscussionM.@pseudo+" dit :</b>\n";
    			discussion.appendText(DiscussionM +"\n\n");
    		    discussionDate.text = "Date et heure du dernier message : "+DiscussionM.@date ;
    		}
    	}
    }
     
    function envoi() {
    	if (mess.text!="") {
    		if (discussion.text!="") {
    			discussion.htmlText+="<b>"+pseudo+" dit :</b>\n";
    			discussion.appendText(mess.text+"\n\n");
    			var urlLoader:URLLoader = new URLLoader();
    			var urlRequest:URLRequest=new URLRequest("conver.php5");
    			var urlVariables:URLVariables = new URLVariables();
    			urlVariables.fichier = IDs ;
    			urlVariables.pseudo = pseudo ;
    			urlVariables.dest = dest ;
    			urlVariables.messages = mess.text ;
    			urlRequest.data = urlVariables ;
    			urlRequest.method=URLRequestMethod.POST;
    			urlLoader.load(urlRequest);
    		} else {
    			discussion.text=mess.text;
    		}
    		mess.text="";
    	}
    	timer.start();
    }
     
    function envoiE(evt:KeyboardEvent):void {
    	if (evt.keyCode==Keyboard.ENTER) {
    		envoi();
    	}
    }
    function envoiC(e:Event):void {
    	envoi();
    }
     
    // XML
    recharge();
     
    function stopScroll(e:Event){
    	timer.stop();
    }
     
    bt_envoi.addEventListener(MouseEvent.CLICK, envoiC);
    mess.addEventListener(KeyboardEvent.KEY_DOWN, envoiE);
    lescroll.addEventListener(MouseEvent.MOUSE_DOWN, stopScroll);
    Merci pour tes réponses !

  10. #10
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Lol, t'es un vrai bourreau
    Bien joué, tant que ça fonctionne, ça calme les nerfs
    tu peux aussi utiliser l'event EnterFrame pour refresh le scroll à chaque nouvel image par seconde, au cas ou le Timer te pose un souci un de ces 4, puis c'est probablement moins brutal qu'un timer 0ms.

    Navré de n'avoir pu cerner le problème en tout cas, bon courage pour la suite

Discussions similaires

  1. Redirection System.out + JScrollPane toujours en bas
    Par g0ldenrno dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 03/07/2006, 16h35
  2. [JTextArea][JScrollPane] ascenceur toujours en bas ?
    Par _KB_ dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/04/2006, 22h52
  3. scrollbar toujours en bas
    Par dams78 dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 02/02/2006, 11h14
  4. Footer devra être toujours en bas...
    Par SangKou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 20/12/2005, 05h11
  5. Positionner le scroll d'un div toujours en bas.
    Par barok dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 12h17

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