Visualizzazione dei risultati da 1 a 10 su 10

Discussione: autoscroll textarea

  1. #1

    autoscroll textarea

    salve, ho una textarea che riempio da un file xml e formatto con un file css; poichè però il contenuto non è noto a priori vorrei che se il testo è troppo lungo, automaticamente a intervalli di tempo regolari scorresse da sola dal'alto in basso, e poi ragginto il fondo tornasse in cima, e così via..

    il tutto da sola, senza che l'utente clicchi sulla barra di scorrimento...

    è possibile? e come? pensavo di usare setInterval, ma non ho trovato una proprietà che mi permette di cambiare il valore della barra di scorrimento.....

    grazie

  2. #2
    il textfield ha la proprietà scroll.

  3. #3
    non è un textfield, è un componente textArea...

    ho visto che c'è lo scrollRect.. può fare al caso mio? sapete darmi una mano su come usarlo, oppure indicarmi una guida?

  4. #4
    E' as3 vero? Mi chiamo fuori ^^

  5. #5
    no.... è un progetto di flash8 in as2.....

  6. #6
    ah ok, la textarea è un componente, non credo di averlo mai usato. Comunque puoi mettere testo multiline anche in sul textfield. In ogni modo invece di agire sullo scroll, io mettere il testo dentro un clip mascherato e cambierei la proprietà _y del clip che contiene il testo.

  7. #7
    ma così perdo il vantaggio (indispensabile x questa applicazione) di avere le informazioni sullo stile in un css esterno.... no?

    e anche in questo caso mica posso sapere a priori quanto deve essere lungo? appena arriva in basso il testo deve tornare su, senza mostrare spazio bianco..

  8. #8
    a forza di cercare ho scoperto che per le textarea si deve usare la proprietà vPosition, solo che sto avendo dei problemi: il filmato man mano che gira impazzsce e rallenta spaventosamente e fagocita tutta la cpu..

    questo è il codice che ho scritto:
    codice:
    //Scroll in sù
    function scroller() {
    	s = setInterval(autoscroll, 50);
    }
    
    function autoscroll() {
    	clearInterval(s);
    	
    	giu = setInterval(scrollGiu, 50);
    	pausa = setInterval(function () {
    		su = setInterval(scrollSu, 50);
    		clearInterval(pausa);
    	}, 5000);
    }
    
    //Scroll in sù
    function scrollSu() {
    	if (textArea_mc.vPosition > 0) {
    		textArea_mc.vPosition -= 0.01;
    	} else {
    		textArea_mc.vPosition = 0;
    		clearInterval(su);
    		scroller();
    	}
    }
    //Scroll in giù
    function scrollGiu() {
    	if (textArea_mc.vPosition < textArea_mc.maxVPosition) {
    		textArea_mc.vPosition += 0.01;
    	} else {
    		clearInterval(giu);
    	}
    }
    e ovviamente dopo che ho formattato la textarea e caricato il testo, avvio il tutto la prima volta con:
    codice:
    scroller();
    in pratica scorre in giù la prima volta e poi inizia ad andare in su e giù a casaccio finchè non si blocca.... sapete dove sbaglio?

    grazie

  9. #9
    Non cambierebbe nulla perchè la tua textarea l'avresti comunque, solo che per lo scroll agiresti sul clip esterno invece che direttamente sulla casella.

    Comunque io semplificherei il codice chiamando una sola funzione scroll.

    tipo

    codice:
    scrolla(){
       if (su){
    	if (textArea_mc.vPosition > 0) {
    		textArea_mc.vPosition -= 0.01;
    	} else {
                     su=false
    	}
       }else{
    	if (textArea_mc.vPosition < textArea_mc.maxVPosition) {
    		textArea_mc.vPosition += 0.01;
    	} else {
    		su=true
    	}
       }
    }
    
    setInterval(scrolla, 50)
    Vedi se fuziona ^^

  10. #10
    funziona... sono sempre meglio le cose semplici...hehe..

    ho aggiunto anche una pausa prima di ripartire semplicemente modificando così il cambio della variabile "su"
    codice:
    setTimeout(function () {su = true}, 5000);
    grazie mille stan!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.