ActionScript 3 completo

eval(“_root.holder.clip”+n)._alpha=50;

ActionScript 3 completo

Qui, la funzione eval calcola cosa restituisce la stringa tra parentesi in fase di esecuzione e restituisce un oggetto clip filmato, quindi questa singola riga può sostituire 20 (o 100 o 1.000) righe di ripetizioni codice. Tuttavia, eval è stato rimosso da AS3. Non piace a molti puristi, anche se non ho mai sentito un argomento convincente per spiegarne il motivo. Fortunatamente, la soluzione alternativa qui è relativamente semplice:

this[“supporto”][“clip”+n]._alpha=50;

Questo codice presuppone che venga eseguito nell'ambito _root e funziona perché tutti i clip filmato sono conservati da Flash in un array bidimensionale.

Ancora più irritante è la completa eliminazione delle variabili globali. Ancora una volta, il principio stesso delle variabili globali è disapprovato dai puristi della programmazione, e sono d'accordo su questo devono essere usati con parsimonia, poiché restano lì a consumare memoria anche dopo che non lo sono più necessario. Tuttavia, supponiamo che tu voglia memorizzare il nome dell'utente da utilizzare in vari punti all'interno della tua applicazione. Cosa potrebbe esserci di più semplice o più appropriato di _global.gUserName? Certo, è possibile passare variabili locali progettando attentamente le proprie funzioni, ma nel mondo reale le scadenze sono sempre troppo brevi e quindi prima si riesce a ottenere qualcosa, meglio è.

Per risolvere questo problema, aggiungi la funzionalità della variabile globale alla tua applicazione AS3 creando un file specifico class per lo scopo e, all'interno di tale classe, creando una variabile oggetto statica alla quale è possibile quindi aggiungere proprietà. Ad esempio, posso dichiarare una nuova classe pubblica contenente una variabile pubblica chiamata nGlobals, in questo modo:

lezioni pubbliche notturne

{

public statico var nGlobals: Object = new Object();

}

Quindi posso accedere al suo contenuto utilizzando la sintassi nlightn.nGlobals.gUserName e scrivere una riga come:

nlightn.nGlobals["gUserName"] = "Giovanni Smith";

Mi sembra ancora una trafila inutile e non posso dire di non vedere l'ora che arrivi il processo di migrazione. Probabilmente lo ritarderò finché non avrò completato un paio di progetti in Flex 2, momento in cui avrò una comprensione molto migliore dei dettagli di AS3.

Flessione in azione

Ho passato gli ultimi mesi a lavorare su un prodotto chiamato Virtual World for Collins, che sarà presto disponibile sia come applicazione web che su CD-ROM. È un programma didattico di supporto all'insegnamento della geografia o di qualunque altra materia che utilizzi dati geografici, costituito da un atlante 3D fornito da Xamba (www.xamba.com), oltre a quattro sezioni extra create da NlightN che includono abilità di mappatura, giochi e dati mondiali.

Sono stato coinvolto in due componenti di questo prodotto: un quiz randomizzato e la componente dei dati mondiali. In entrambi i casi, abbiamo scelto di archiviare i dati in formato XML, per due motivi. Innanzitutto, XML ci consente di strutturare i dati in un formato logico di nostra scelta e, in secondo luogo, Flash ha un formato logico integrato Gestore XML che dovrebbe semplificare l'affettatura e la suddivisione dei dati rispetto alla lettura di alcuni file di testo personalizzati formato. Uno degli usi principali di XML è archiviare i dati del profilo paese ordinati per continente, quindi una volta selezionato un continente, viene visualizzata una casella a discesa con i nomi dei paesi e selezionando un paese si popola una tabella con le informazioni di quel paese.

Ci sono generalmente due modi per raggiungere questo obiettivo, l’approccio indiretto consiste nel leggere i dati in un array multidimensionale, la cui prima dimensione rappresenta il paese posizione in un elenco alfabetico e la seconda dimensione contiene diversi elementi di dati su quel paese – ad esempio, i profili[2][1] potrebbero contenere la popolazione dell'Angola figura. Il modo teoricamente più semplice è associare direttamente la casella a discesa e la tabella ai dati XML, un approccio tipicamente utilizzato da linguaggi di programmazione come Visual Basic o C#, ma l'implementazione del data binding di Flash 8 è così confusa che abbiamo finito per utilizzare il metodo dell'array.