Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Ciclo IF.. help!

  1. #1

    Ciclo IF.. help!

    Ciao a tutti,
    ho un grosso problema con un effetto che vorrei creare con dei bottoni in flash. Provo a spiegare di cosa si tratta. Ho 4 bottoni che una volta cliccati attivano una transizione da 4 movieclip diversi per far apparire un testo appartenente a ciascuna sezione. E fin qui le cose funzionano. Il problema si pone con la transizione "d'uscita" di un testo per passare al successivo selezionato. Ho provato a fare un ciclo if ma vengono eseguite solo le prime istruzioni e non quelle successive. Non so proprio dove sbaglio.
    Vi posto di seguito il codice che ho scritto, se qualcuno mi può dare una mano gliene sarei grataaa!! Anche perchè con i cicli if non ho mai avuto molta simpatia
    Grazie!!

    on (release) {
    casa.gotoAndPlay("testo1");
    if (cucina == "cucina2", salotto == "salotto2", corridoio == "corridoio2") {
    cucina.gotoAndPlay("cucina21");
    salotto.gotoAndPlay("salotto21");
    corridoio.gotoAndPlay("corridoio21");
    } else {
    cucina.gotoAndStop("cucina1");
    salotto.gotoAndStop("salotto1");
    corridoio.gotoAndStop("corridoio1");
    }
    }

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao

    Scusami, non ho ben capito il problema.
    In particolare non ho capito in che modo, e in che momento, vuoi che avvenga la transizione in uscita dei vari clip.

    Inoltre non mi è chiara la funzione di questa riga di script:
    codice:
    if (cucina == "cucina2", salotto == "salotto2", corridoio == "corridoio2") {
    Hai utilizzato cucina, salotto e corridoio come fossero delle variabili ma, di seguito, le utilizzi come nomi delle tre istanze... non mi è chiaro :master:

    Non vedendo lo script completo, e non avendo ben chiaro il problema, mi viene difficile capire quale sia la tua reale intenzione.

    Inoltre non capisco perché hai utilizzato la virgola (o meglio "l'operatore virgola") all'interno di quella condizione.
    Troverei più consono un operatore AND "&&" o tuttalpiù un OR "||".

    Trovo il tutto molto confuso.
    Potresti spiegare meglio?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ciao KillerWorm
    hai perfettamente ragione, il tutto è molto confuso.. è che con Flash so lavorare a livello base, quando poi si tratta di editare con gli actionscript.. help! Ho bisogno di una mano!
    In ogni caso provo a rispiegarti il tutto: ho 4 bottoni a cui sono associati 4 movieclip differenti. Ogni movieclip prevede che al momento in cui l'utente decide di cliccare sul bottone1 venga caricato il testo1 con una semplice transizione con effetto di "ZoomIn". Quando poi l'utente decide di cliccare il bottone2 vorrei che il testo presente sullo stage del movieclip precedentemente attivato si tolga con una transizione di "zoomOut".
    Provo a schematizzare: clicco il bottone1-->il movieclip1 fa apparire il testo1, clicco il bottone2--> il movieclip1 riparte e toglie il testo1, mentre il movieclip2 fa caricare il testo2.. così via dicendo con gli altri bottoni.
    Il punto è che nn sapendo l'ordine con cui l'utente cliccherà i bottoni, l'unica soluzione che m'era venuta in mente era di utilizzare l'if. Ma come vedi.. nn so cm si faccia!
    Spero di essere stata più chiara ora

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ora ho capito leggermente di più.

    Si può fare in vari modi.
    Non vorrei stravolgere il tuo lavoro ma credo sia più efficace se rivedessi il tutto in un'ottica un po' più da programmatore.

    Purtroppo mi viene difficile spiegarti il procedimento se sei al livello base però ci provo ugualmente.

    Supponiamo di riprendere tutto da zero...

    Il metodo che ti spiego utilizza una variabile che tiene traccia dell'ultimo clip selezionato in modo da poterne gestire la chiusura al momento opportuno.
    Non ci sono delle condizioni "if" ma tuttavia ci sono altre parti di script che potresti non capire appieno. Per questo ho cercato di commentare al meglio lo script che ho utilizzato.

    Per prima cosa è preferibile NON associare le azioni direttamente sulle istanze (come hai fatto con il gestore "on" sui bottoni) ma piuttosto si dovrebbe porre lo script in un frame (ad esempio sul primo frame della root) e gestire le istanze richiamandole tramite il relativo nome istanza che andrà indicato su ciascuna di esse, e utilizzando gli appositi gestori, metodi e funzioni.

    Per cui disponi sullo stage (nella root) i 4 bottoni e istanziali come "bottone0", "bottone1", "bottone2", "bottone3".

    Mentre i clip li puoi istanziare come "casa", "cucina", "salotto", "corridoio", così come dovresti avere già fatto.

    Ognuno di questi 4 clip deve avere una stessa struttura di frame.
    Definisci ad esempio:
    - un primo frame vuoto con uno stop();
    - un frame etichettato "entrata" da cui inizia la relativa serie di frame per la transizione in entrata. All'ultimo frame di questa transizione metti uno stop();
    - Un frame etichettato "uscita" da cui inizia la relativa serie di frame per la transizione in uscita.

    Metto in allegato un'immagine della timeline come esempio per capire meglio.
    I due stop() vanno messi nei due frame con la "a".

    A questo punto inserisci il seguente script sul primo frame della root.
    Codice PHP:
    // definisco un array dei clip da associare ai bottoni
    var clips = [casacucinasalottocorridoio];
    // definisco la variabile che identificherà l'ultimo clip selezionato
    var ultimoClipSelezionato;
    // ciclo la serie di bottoni e assegno ad ognuno la funzione per l'evento release
    for (var id 0id<4id++) {
        var 
    bottone this['bottone'+id];
        
    // per ogni bottone definisco la variabile clipAssociato
        
    bottone.clipAssociato clips[id];
        
    // assegno la funzione per il release
        
    bottone.onRelease = function() {
            
    // se ultimoClipSelezionato è stato valorizzato, ne eseguo l'uscita
            
    (ultimoClipSelezionato) && ultimoClipSelezionato.gotoAndPlay('uscita');
            
    // aggiorno ultimoClipSelezionato
            
    ultimoClipSelezionato this.clipAssociato;
            
    // eseguo l'entrata del clip associato a questo bottone
            
    this.clipAssociato.gotoAndPlay('entrata');
        };

    Più di questo non saprei dirti.
    Spero di esserti stato d'aiuto ma soprattutto di non averti creato maggiore confusione
    Immagini allegate Immagini allegate
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Caro KillerWorm... grazieeeeee!! Davvero.. ho fatto come mi hai detto e funziona! Visto che ci siamo.. avrei un ultimo aiuto da chiederti: vorrei che quando la pagina dove sono posizionati i quattro bottoni viene caricata apparisse subito il testo del bottone0 (testo casa). Ho provato con:

    onEnterFrame;
    casa.gotoAndPlay("entrata2");

    dove per "entrata2" si intende l'etichetta che ho aggiunto al frame corrispondente alla fine dell'interpolazione del testo casa in entrata. Ma, seppur il testo appaia subito come voglio al caricamento della pagina, mi crea problemi poi quando selezioni gli altri bottoni, in quanto mi rimane fisso sotto gli altri testi fino a quando non riclicco il bottone0. Cosa ovvia direi..

    Se riuscissi anche a risolvermi quest'ultimo problemuccio.. bhè.. non posso che ringraziarti davvero tanto!!

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ma, seppur il testo appaia subito come voglio al caricamento della pagina, mi crea problemi poi quando selezioni gli altri bottoni, in quanto mi rimane fisso sotto gli altri testi fino a quando non riclicco il bottone0. Cosa ovvia direi..
    Ovvissima
    Questo perchè stai saltando l'aggiornamento della variabile ultimoClipSelezionato che avviene solo al momento del click.

    Puoi forzare l'aggiornamento semplicemente definendo quella variabile all'inizio col valore "casa", in modo che al click successivo avvenga l'uscita di tale clip.

    Basta che modifichi la seconda riga dello script in questo modo:
    codice:
    var ultimoClipSelezionato = casa;
    Buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    KillerWorm.. qui le cose purtroppo non quagliano. Non funziona
    Ho sostituito la seconda riga come mi hai detto ma quando carico la pagina nn appare il testo0 relativo al primo bottone, ma si attiva sl quando clicco il bottone0. Uffetta......

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Quella riga va sostituita oltre a quello che hai già fatto.
    Hai messo casa.gotoAndPlay("entrata2"); così come hai indicato?!
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Certo che NON ho messo casa.gotoAndPlay("entrata2"); !!
    Ho inserito il codice che ti posto di seguito, così come mi hai indicato.. ma nn funziona..

    var clips = [casa, cucina, salotto, corridoio];
    var ultimoClipSelezionato;
    onEnterFrame;
    var ultimoClipSelezionato = casa;
    for (var id = 0; id<4; id++) {
    var bottone = this['bottone'+id];
    bottone.clipAssociato = clips[id];
    bottone.onRelease = function() {
    (ultimoClipSelezionato) && ultimoClipSelezionato.gotoAndPlay('uscita');
    ultimoClipSelezionato = this.clipAssociato;
    this.clipAssociato.gotoAndPlay('entrata');
    };
    }


  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    ..non ci siamo

    Lo script è questo (in rosso ho evedenziato la parte che andava modificata):
    codice:
    var clips = [casa, cucina, salotto, corridoio];
    
    var ultimoClipSelezionato = casa;
    casa.gotoAndStop('entrata2');
    
    for (var id = 0; id<4; id++) {
        var bottone = this['bottone'+id];
         bottone.clipAssociato = clips[id];
        bottone.onRelease = function() {
            (ultimoClipSelezionato) && ultimoClipSelezionato.gotoAndPlay('uscita');
            ultimoClipSelezionato = this.clipAssociato;
            this.clipAssociato.gotoAndPlay('entrata');
        };
    }
    Spero sia chiaro.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.