Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it L'avatar di MoSAIk
    Registrato dal
    Jun 2010
    Messaggi
    12
    Allora, mi sto studiando il tuo codice. Non capisco una cosa: quando stai dicendo come comportarsi all'array con il ciclo for, non mi è chiaro

    1) quelle [i] cosa mi stanno a identificare (ho una mezza idea ma vorrei capire bene)
    2)cosa gli stai dicendo a flash con bottoni [i]. identificatore = i

    ti ringrazio e santo subito per ciò che stai facendo! (ovvero aiutare un povero grafico che di programmazione ci capisce non molto)

  2. #12
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    ti ringrazio e santo subito per ciò che stai facendo! (ovvero aiutare un povero grafico che di programmazione ci capisce non molto)
    Grazie a te per l'apprezzamento e la gratitudine ma devo ammettere che l'attributo di "santo" non fa al caso mio perchè mi piace e mi diverte interagire con gli utenti di questo forum non certo per "scopi umanitari", ma più semplicemente perchè anch'io stò imparando AS3 e tutto questo mi aiuta a tenermi in allenamento e fare interessanti esercizi su logiche e concetti non facili da comprendere e assimilare.

    Quella del ciclo for è proprio una di quelle logiche che ancora oggi, dopo mesi che la vedo utilizzare in diversi tutorial e esempi di AS3, ancora non mi è completamente chiara ma posso provare a spiegarla, sperando di non fare più confusione che chiarezza.
    Scusami se posso apparirti prolisso e ripetere concetti che probabilmente già conosci ma mi serve per tenere il filo logico del discorso nel tentativo di rendere chiara la questione. Comincio dall'inizio:

    Succede spesso di dover ripetere le stesse identiche funzioni per un certo numero di oggetti, come per esempio, pulsanti, movieClip, link ecc.
    Come nel caso del tuo file, dove ci sono 4 pulsanti e 4 indirizzi che devono essere utilizzati per effettuare le stesse identiche funzioni.

    In questo caso, per evitare di dover riscrivere le stesse funzioni per ogni oggetto è meglio usare gli Array indicizzati e un ciclo for che valorizza una variabile ([i]) in relazione a uno degli indici numerici contenuti nell'Array (Quale? Quello che effettivamente serve nel momento in cui viene chiamato).

    Mi spiego meglio:
    Abbiamo la possibilità di attribuire un Listener a un oggetto semplicemente chiamandolo con il suo nome:

    bottone1.addEventListener ....

    Se creiamo un Array indicizzato con tutti i nomi dei pulsanti che abbiamo, per richiamare un elemento dell'Array possiamo chiamarlo facendo riferimento alla sua posizione nell'Array:

    bottoni[0].addEventListener ....

    In questo modo, facciamo riferimento all'indice n.0 dell'Array (quindi a bottone1) ma ancora non abbiamo risolto gran che perchè dovremmo comunque ripetere le righe di codice per ogni elemento dell'Array.

    Ecco che diventa importante utilizzare il ciclo for per ottimizzare il codice che, oltre a evitarci di dover riscrivere le stesse righe di codice per ogni oggetto che deve fare le stesse cose, si velocizza la lettura del codice da parte del FlashPlayer e quindi l'esecuzione.

    In un ciclo for come prima cosa creiamo una variabile, in questo caso di tipo:int (numero intero)

    for (var i:int =0;

    Aggiungiamo una condizione da valutare: se minore al valore della variabile iniziale.
    Potrebbe essere un numero, ma nel codice sopra è stato usato il riferimento alla lunghezza (.length) dell'Array in modo da poter aggiungere a piacere elementi nell'Array e questi verranno identificati automaticamente e inclusi nel ciclo senza dover modificare altro.

    for (var i:int =0; i < filmatiEsterni.length ;

    Infine mettimo un incremento della variabile: "i" in modo che cambi il suo valore fino a quando la condizione precedente risulta falsa:

    for (var i:int =0; i < filmatiEsterni.length ; i++)

    In altre parole: Ora "i" è uguale a "0"; SE "i" è minore della lunghezza dell'Array; Incrementa il valore di "i" di 1.
    Questa riga di codice viene letta fino a quando la condizione risulta essere falsa, cioè "i" non è minore alla lunghezza dell'Array quindi basta così, non la incremento più !

    Se abbiamo 4 elementi nell'Array e all'interno del ciclo for facciamo un:

    trace ([i]);

    Otteniamo: 0 1 2 3
    Praticamente i 4 indici numerici dell'Array, considerando che il primo indice di un Array è 0.
    Si attribuisce quindi alla variabile "i" un valore che può essere compreso tra 0 e 3

    Se, sempre all'interno del ciclo for facciamo un:

    trace (filmatiEsterni[i]);

    Otteniamo i 4 nomi contenuti in filmatiEsterni: page1.swf, page2.swf, page3.swf, page4.swf

    Nelle righe successive assegnamo a bottoni[i] una proprietà dinamica che ho chiamato "identificatore" a cui diamo il valore della variabile "i" che essendo appunto "variabile", varia a seconda dell'obietivo "target" effettivo.
    Per capire bene cosa fa questo "identificatore" credo possa essere utile fare un trace nella funzione "bottoneDown":

    trace (filmatiEsterni[evento.target .identificatore]);

    Come vedi il valore identificativo richiesto nell'Array filmatiEsterni[...] è quello effettivo che scatena l'evento ovvero, se premo su "bottone1" "i" ha valore [0] e in "filmatiEsterni" "0" corrisponde al primo indice dell'Array = "page1.swf".


    Alla prossima !

    ciao

  3. #13
    Utente di HTML.it L'avatar di MoSAIk
    Registrato dal
    Jun 2010
    Messaggi
    12
    Peeeerfetto, sei stato limpido.
    Un ultima cosa per performare il tutto,
    quando tu dici:

    var resetta:Resetta = new Resetta();

    stai creando una variabile di tipo Resetta (?) che palle essere autodidatti! Ho dei buchi clamorosi nella teoria... :master:

  4. #14
    Utente di HTML.it L'avatar di MoSAIk
    Registrato dal
    Jun 2010
    Messaggi
    12
    okok forse ho capito, dev'essere l'istanza del tasto back sullo stage? Però non capisco perchè creare una variabile, dall'istanza, e nel codice.

  5. #15
    Utente di HTML.it L'avatar di MoSAIk
    Registrato dal
    Jun 2010
    Messaggi
    12
    ok, no, non ho capito

  6. #16
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Originariamente inviato da MoSAIk
    ok, no, non ho capito
    hihihi ... in effetti quel modo di importare un movieClip è un trucco per predisporti per un ricovero alla neuro !

    ... Skerzo ovviamente !

    E' stata la prima cosa che mi è venuta in mente pensando di dover importare in dinamico il clip dalla libreria.
    Quel metodo, in questo caso non era necessario e avrei potuto, in alternativa mettere il clip sullo stage, in un punto non visibile, e "attaccarlo" alla coordinata x e y nel momento in cui serviva e quindi rimuoverlo insieme al filmato caricato.

    In quel modo invece è come se avessi creato una nuova classe, un'estensione della classe MovieClip.

    Praticamente quando crei un MovieClip e lo esporti per ActionScript dal pannello di proprietà, appare automaticamente nel campo "classe" il nome (che puoi comunque modificare) del tuo movieClip.
    Flash ti avverte che non trova una definizione per una classe con quel nome ma che ne genererà una al momento della pubblicazione.

    In seguito per utilizzare il tuo movieClip sullo stage ti basta istanziarlo con un nome di variabile del tipo:MioMovieClip=new MioMovieClip();

    Nell'esempio del codice sopra, la variabile "resetta" è di tipo "Resetta", il nome della mia classe (estensione della classe MovieClip) presente nella libreria.
    Con l'addChild(resetta) la attacco allo stage direttamente dalla libreria senza doverla mettere sullo stage.

    In questo caso come ho scritto sopra questo metodo è un tantino superfluo in quanto il clip-classe "Resetta" è nella libreria del fla che lo utilizza ma se volessimo importarlo in un altro file, si potrebbe fare.
    Nel caso di un progetto pesante con molti clip che servirebbero solo in alcune parti del filmato, questi clip esterni verrebbero caricati e scaricati al momento giusto alleggerendo il file principale e ottimizzandolo nel modo migliore per la visualizzazione sul web.

    Un saluto e alla prossima

    ciao

  7. #17
    Utente di HTML.it L'avatar di MoSAIk
    Registrato dal
    Jun 2010
    Messaggi
    12
    Finalmente posso dire di aver concluso questo lavoro, dovrò riconoscerti qualcosa!

    Coomunque per concludere, non sapevo che si facesse così per richiamare gli oggetti dalla libreria allo stage! Cioè richiamare tramite una variabile un movieclip dalla libreria...beellissimo

    grazie ancora, a presto!

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.