L'oggetto Selection e... qualcos'altro

In questo tutorial tratteremo, per molti sarà un ripasso, i seguenti argomenti:

Funzioni di callback a singola riga
Evento onChanged della classe TexfField
Creazione di riferimenti relativi
Iterazioni con i cicli while e for
Oggetto Selection
Creazione dei listener
Azioni ripetute con setInterval

Spiegheremo questi argomenti partendo subito dal progetto allegato.
Il progetto consente di visualizzare sotto forma di elenco nel campo di testo dinamico out_txt, i caratteri inseriti nel campo di testo di input in_txt.
E’ possibile poi visualizzare nel campo di testo dinamico sel_txt, la selezione fatta in out_txt.

in_txt.onChanged = function () {
//create local references
var s = this.text;
var l = s.length;
var t = this;
var T$ = t._parent.out_txt;
a = [];
var n = -1;
while (++n Characters List" + n + "=============" + n + n;
for (var i = 0; i " + a[i] + "" + n;
}
};

 

Questo blocco di codice rappresenta la prima parte del progetto, consente cioè di visualizzare in out_txt, l’elenco dei caratteri inseriti in in_txt.
Il tutto è stato racchiuso in una funzione di callback a singola riga detta anche funzione senza nome.
Queste funzioni le possiamo anche utilizzare per raggruppare il codice in un'unica posizione, per esempio possiamo raggruppare gli script di più pulsanti in modo da accentrare il codice.

Invece per esempio di avere in ogni pulsante:

on(press){
//azioni
}

avremo:

pulsante1.onPress = function(){
//azioni
}
pulsante2.onPress = function(){
//azioni
}

In questo modo risulta più facile anche la correzione degli script.

Un altro utilizzo interessante è per esempio nel caso di una duplicazione a runtime di un clip pulsante.

for (var i = 0; i Characters List" + n + "=============" + n + n;
for (var i = 0; i " + a[i] + "" + n;
}
};

Infine con il ciclo for vengono presi ad uno ad uno i caratteri dall’array con i quali si crea la stringa.

Si è scelto di allungare il codice, per spiegare meglio i concetti. Ovviamente esistono altri modi per eseguire queste operazioni.

Passiamo ora alla seconda parte del progetto, esaminando l’oggetto Selection.
Selection fa parte delle Classi di livello superiore, quindi non viene istanziata per il semplice fatto che come per il puntatore del mouse, ci può essere una sola selezione.

 

myFocusEvent = new Object ();
myFocusEvent.onSetFocus = function () {
Selection.getFocus () == "_level0.out_txt" ? myInt = setInterval (sel, 10) : stopInt ();
};
Selection.addListener (myFocusEvent);

//Functions
function sel () {
var starSel = Selection.getBeginIndex ();
var endSel = Selection.getEndIndex ();
var s$ = out_txt.text.substring (starSel, endSel);
sel_txt.text = s$;
}
function stopInt () {
clearInterval (myInt);
}

 

 

Per poter definire la sottostringa di selezione, è necessario che sia selezionata una sottostringa, quindi utilizzando i metodi getBeginIndex() e getEndIndex dell’oggetto Selection possiamo estrarre la selezione col metodo substring(indiceInizio,indiceFine) dell’oggetto String.

Il progetto fa proprio questo, prima però definisce un listener che possa rilevare quale campo di testo ha il focus attivo utilizzando il metodo Selection.getFocus() il quale restituisce come percorso assoluto il nome dell’istanza di campo di testo col focus correntemente attivo.

In questo modo alleggeriamo il lavoro del processore, in quanto la funzione sel() viene richiamata continuamente solo se è il campo out_txt ad avere lo stato attivo.

Non appena si verifica l’evento onSetFocus, Flash controlla quale campo di testo ha il focus e quindi con la funzione sel() estrae la sottostringa di selezione e la assegna alla proprietà text del campo di testo dinamico sel_txt,
Nella funzione di callback abbiamo usato l’operatore ternario ?, il che equivale a scrivere:

if (Selection.getFocus () == "_level0.out_txt") {
myInt = setInterval (sel, 10);
} else {
stopInt ();
}

L’uso di setInterval consente di richiamare ricorsivamente una funzione e può essere un’alternativa al enterFrame().

Esaminiamo adesso la funzione sel().
Come abbiamo detto prima, utilizzando i metodi dell’oggetto Selection getBeginIndex() e getEndIndex in combinazione con substring(indiceInizio,indiceFine) possiamo estrarre la sottostringa di selezione che assegniamo alla variabile s$.
Infine s$ viene assegnata alla proprietà text del campo dinamico sel_txt.
Ricordo le stringhe, come gli array, si basano su una numerazione a base 0, quindi il primo carattere occupa la posizione 0.

Provate ora il progetto.
Scrivete qualcosa nel campo di input, otterrete la visualizzazione in lista dei caratteri inseriti, quindi andate nel campo dinamico e selezionate una parte della stringa, otterrete la visualizzazione della selezione nel campo dinamico sel_txt.

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Lorenzo
Hai qualche domanda da fare?