Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    103

    azioni diverse in funzione di valori diversi

    Buondì,
    qualcuno può aiutarmi a rendere più efficace un lavoro che devo fare?
    devo far fare a un swf azioni diverse in funzione del valore assunto da una variabile. Si possono verificare 6 casi possibili.
    Io la saprei risolvere con una serie di if come questi

    if (valore==caso1){
    esegui una certa cosa
    } else if (valore==caso2){
    esegui un'altra cosa
    } else if ...


    e così via per i sei casi.
    C'è un modo più pratico efficente e corretto per fargli fare questo?

    Adesso ho a che fare con 6 possibilità sole, ma se un domani mi ritrovo a gestirne una 20 ... son dolori


  2. #2
    Ciao,
    provo a sparare una soluzione al volo, senza provarla:
    crei 2 array, 1 che contiene i valori della variabile
    new array(1,2,3,4,5,6...)
    l'altro che contiene i nomi funzione
    new array('funct1','funct2',.....)

    quali eventi sono legati a queste azioni che devi eseguire ?


    Bye

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    103
    voglio comandare l'alternarsi di bottoni ... se hai un attimo, voglio ricreare un menù del tipo di questo:

    http://www.confrontation.fr/index_fla.html

    se vai su un paio dei globi colorati sulla sinistra, ti rendi conto dell'effetto.

    Quello che voglio fare è pilorare i vari mc, per fare in modo che l'attivarne uno, attivi contemporaneamente la chiusura di quello attivo al momento del click (più facile da capire che non da scrivere)
    Con la serie di if funziona, volevo trovare un modo più carino ed elegante.
    come si usano gli array?
    sono un totale autodidatta di Actionscript :tongue:

  4. #4
    Ciao,
    adesso ho capito, lascia perdere gli array perché la soluzione è più facile.
    All'interno di ogni mc crei la sequenza animata di apertura e di chiusura. Crei le labels 'apri' e 'chiudi'.
    Quindi quando cliccherai sui relativi mc farai un aperto.gotoAndPlay('chiudi') e chiuso.gotoAndPlay('apri'). Devi logicamente tenere conto del mc aperto. es.

    - all'inizio non ci saranno mc aperti e quindi la variabile mc_ID_aperto sarà =0 e mc_ID_chiuso = 0

    quando clicco mc1 la variabile mc_ID_aperto = 1 mc_ID_chiuso=0
    quando clicco mc2 la variabile mc_ID_aperto = 2 mc_ID_chiuso=1
    quando clicco mc3 la variabile mc_ID_aperto = 3 mc_ID_chiuso=2

    considerando il clicco mc2:
    mc2.gotoAndPlay('apri')
    mc1.gotoAndPlay('chiudi')

    ho fatto un pò di casino, ma dovresti riuscire a capire ugualmente.
    riass.
    crei i vari mc con le sequenze apri e chiudi
    crei 2 variabili aperto e chiuso che verranno aggiornate in base all' mc cliccato.
    fai il mc+aperto.gotoAndPlay('apri')
    mc+chiuso.gotoAndPlay('chiudi')

    Fammi sapere

    Bye

  5. #5
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,322
    altra soluzione:

    fai le tua animazioni con relativi stop ecc ecc
    chiama le istanze uno due tre quattro
    fai le quattro aree pulsante


    nella timeline metti questo

    function plei(filmato) {
    tasto._visible = 0;
    filmato.play();
    ritorno.play();
    this.onEnterFrame = function() {
    if (filmato._currentframe == 20) {
    delete this.onEnterFrame;
    ritorno = filmato;
    }
    };
    }



    nei tasti metti questo

    on(release){
    _root.plei(uno)

    }


    dovrai, credo, aggiungere qualche controllo ma il metodo dovrebbe funzionare

  6. #6
    Aggiungo un'informazione "tecnica" (non so se in questo caso è la soluzione migliore, ma in ogni caso dato che dici di essere un neofita di actionscript magari può esserti utile per il futuro):
    quando si ha una serie di if... elseif... elseif... else si è soliti utilizzare la struttura switch per snellire il codice e renderlo più leggibile:
    codice:
    switch (variabile) {
    	case 1:
    		// inserisco le azioni opportune per variabile = 1
    		break;
    	case 2:
    		// inserisco le azioni opportune per variabile = 2
    		break;
    	case 3:
    		// inserisco le azioni opportune per variabile = 3
    		break;
    	default:
    		// inserisco le azioni opportune per tutti
                    // gli altri valori di variabile
    }
    Puoi trovare approfondimenti sulla guida in linea di Flash.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    103
    stavo provando a passare un valore ad una funzione che ho fatto, ma mi combina un po' di casini!!!

    nel primo keyframe ho messo:

    var attivo="";
    function attiva(filmato){
    trace(filmato);
    filmato.gotoAndPlay("release_"+ filmato);
    if(attivo!==""){
    attivo.gotoAndPlay("end_"+ attivo);
    }
    attivo = filmato;
    trace("nuovo attivo =" + attivo);
    }


    ma non funziona ... credo che il problema sia legato al fatto che, invece di passarmi il valore

    'ciccio',

    mi passa il

    valore '_level0.ciccio'


    anche se il bottone che uso (ed è posto sulla timeline a livello _root, è il seguente :

    on(release){
    attiva(ciccio);
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    103
    dov'è che sbaglio?

    Da un punto di vista concettuale mi sembra corretto.

    Se riesco a far funzionare questo, alla stessa funzione faccio anche fare l'animazione di out al pulsante 'attivo', prima di riassegnare alla variabile 'attivo', il nuovo valore di 'filmato'


    Mi stò incartando ... help

  9. #9
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,322
    prova così


    var attivo="";
    function attiva(filmato){
    mio=eval("this."+filmato)
    trace(mio);
    mio.gotoAndPlay("release_"+ filmato);
    if(attivo!==""){
    attivo.gotoAndPlay("end_"+ attivo);
    }
    attivo = filmato;
    trace("nuovo attivo =" + attivo);
    }

    e nel tasto passa "ciccio" e non ciccio

    cioè con le virgolette sopra

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    103
    grazie mame ... + o - adesso funziona ... provo a lavorarci un po' su e poi ti faccio sapere

    Mi spieghi una cosa?

    come mai il mio non funzionava ed hai risolto tutto creando un'altra variabile che chiami mio?

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.