Potrei secondo voi ricavarmi il contenuto di una riga di testo
ad una determinata posizione di scroll?
esempio:
testo dinamico alto 50 righe
se sono alla riga 20 posso estrarre il suo contenuto/stringa ?
Potrei secondo voi ricavarmi il contenuto di una riga di testo
ad una determinata posizione di scroll?
esempio:
testo dinamico alto 50 righe
se sono alla riga 20 posso estrarre il suo contenuto/stringa ?
puoi estrarre il contenuto di una stringa con il substr partendo da un indice e indicando quanti caratteri prelevare... tuttavia ricondurli ad una specifica linea di testo in un box è possibile solo se usi un carattere non proporzionale come il courier in cui ogni lettera ha la stessa larghezza e quindi puoi sapere per certo quanti caratteri ci sono in una riga
es: 5a riga, 20 caratteri per riga, sei all'81mo carattere... perchè una riga di "i" è uguale ad una riga di "w" come numero di caratteri...
altrimenti a memoria non mi viene in mente nient'altro
ciao
"La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)
Per ora sono arrivato a questo punto.
dove:
testo=nome istanza campo dinamico
textino=nome variabile associata a testo.
PASTICCIO= la stringa da cercare.
Quindi oltre al normale scroll da pulsanti e barra
sto cercando di ricrearlo anche a parole chiave.
Le azioni associate al pulsante funzionano, ma solo se il
testo a tutti gli "a capo" (\r) che servono;
se il testo va a capo in automatico con l'utilizzo del
wordwrap mi perdo i numeri di riga per effettuare il giusto
scroll.
A questo punto dovrei trovare la maniera di capire quante
volte il testo va a capo in automatico per poi sommarle
agli effettivi \r.
on (release) {
stringaID = testo.text.indexOf("PASTICCIO");
arra= new Array();
arra=testo.text.split("\r");
for(i=0;i<=arra.length;i++)
{
zio = (arra[i].length)+zio;
if(stringaID > zio){
num=i;
}
}
if(num >1)tutto=num;
else tutto=0;
_root.alto=_root.textino.scroll;
function cambio(){
ora=_root.textino.scroll;
if(_root.alto < tutto){
_root.textino.scroll=ora+1;
}
if(_root.alto > tutto){
_root.textino.scroll=ora-1;
}
if(ora == tutto){
_root.alto=_root.textino.scroll=tutto;
clearInterval(intervalID);}
}
var intervalID;
intervalID =setInterval(cambio,10);
}
ma scusa mi son dimenticato una cosa... se l'utente deve selezionare del testo esiste l'oggetto selection da flash mx in poi
e con quello fai di tutto
"La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)
no, l'utente non seleziona niente.
Tutto questo mi serve per generare delle pseudo ancore.
Da capo:
supponiamo di essere nella sezione del sito relativa alla descrizione
dell'azienda.
visualizzo il testo tramite un campo dinamico con scrolling.
il testo è lungo 500 righe, ma per ragioni ovvie di spazio ne visualizzo solo 30.
A fianco al testo con scroll ho 5 pulsanti(paragrafi relativi alla
descrizione dell'azienda) che mi servono per scrollare il testo in
automatico fino appunto al paragrafo desiderato, con l'effetto scorrimento testo regolato in velocità dal setInterval.
A questo punto non ci sarebbe nessun problema se il testo fosse sempre
quello, difatti potrei impostare le "ancore" direttamente tramite il
numero di riga alla quale mi devo portare.
Tutto ciò però non va più bene se il testo passato come variabile
cambia, soprattutto tenendo conto che i file di testo li caricherà
sul server il cliente tramite un file PHP che mi generà in automatico
le parole chiave (titoletti dei paragrafi) che passerò come variabili
(assieme alla variabile che contiene tutto il testo) da associare ai vari pulsanti per la suddetta ricerca e relativo scrolling.
scusa, ma prima non avevo proprio capito cosa volevi fare...
la via migliore è mettere all'interno del testo dei caratteri speciali che indicano un'ancora ad esempio "$$" potrebbe essere un ancora...
quando carichi il testo potresti fare
testo_array=testo.split("$$");
righe_array=new Array();
campo_txt.text="";
for(var i=0; i<testo_array.length; i++) {
campo_txt.text+=testo_array[i];
var ultima_riga=campo_txt.maxscroll;
righe_array.push(ultima_riga);
}
e poi cliccando sul bottone (ammesso che ogni bottone abbia un suo n identificativo) puoi dargli come azione
campo_txt.scroll=righe_array[this.n-1];
o se vuoi farlo graduale col set Interval inventati qualcosa...
[guarda che non l'ho testato quindi andranno sistemate alcune cose, ma questa è l'idea di fondo]
ciauz
campo_txt
"La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)
certo, posso anche dire al cliente di andare a capo e ho già risolto
il problema, ma vorrei non dover obbligare il cliente a fare qualcosa
di pìù che non sia un copia e incolla.
Vorrei riuscire a scoprire come flash utilizza il wordwrap
oppure riuscire a leggere il contenuto di riga ad un dato valore di
scroll.
Potrei sempre utilizzare il getTextExtent per capire se ogni elemento
dell'array è più largo del campo di testo, poi cercare un eventuale
punto di interruzione ed inserire un \r,
ma dovrei applicare un textFormat e questo diventerebbe un altro limite.
Se qualcuno si volesse cimentare.....
questo è il fla
perchè, credi che se il cliente incolla un testo ben formattato da word flash ti conserva tutti i font i colori e le dimensioni?Originariamente inviato da alpeweb
ma dovrei applicare un textFormat e questo diventerebbe un altro limite.![]()
"La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)
certo che no visto che comunque il campo di testo in flash
ha la sua formattazione, vorrei evitare che chi inserisce i testi
si deva preoccupare di andare a capo obbligatoriamente ogni tot
caratteri.