• User Attivo

    azzerare più variabili in flash 8

    Salve a tutti.
    Premessa
    Ho un form realizzato in flash che comunica con un file php per inviare i dati compilati ad una mail, in pratica funziona così: L'utente compila i campi relativi a nome cognome ecc.., alcuni di questi sono obbligatori e nel caso non vengono compilati esce un messaggio di avviso che per tot secondi avvisa l'utente informandolo su quale campo non è stato compilato, dopo l'utente può riempire il campo vuoto e quindi fare click su di un tasto invia che trasmette i dati alla pagina php, questa invia la mail, da un messaggio di conferma e ricarica la pagina contenente il form.

    Problema
    Nel caso l'utente abbia compilato un campo obbligatorio solo dopo il messaggio di errore e per un motivo x abbia cancellato il contenuto di un altro campo obbligatorio il form non restituisce più nessun errore come invece dovrebbe fare.

    Codice pulsante invio
    on (release) {
    if (nome == null)
    {
    gotoAndPlay("nome vuoto");
    }
    else if (cognome == null)
    {
    gotoAndPlay("cognome vuoto");
    }
    else if (cit == null)
    {
    gotoAndPlay("città vuoto");
    }
    else if (email == null)
    {
    gotoAndPlay("email vuoto");
    }
    else
    {
    gotoAndPlay("invia");
    }}

    Codice variabili presente nel fotogramma 1
    stop ();

    var variabile: LoadVars = new LoadVars();
    variabile.nome = nome.text; //campo obbligatorio
    variabile.cognome = cognome.text; //campo obbligatorio
    variabile.ragsol = ragsol.text;
    variabile.naz = naz.text;
    variabile.cit = cit.text; //campo obbligatorio
    variabile.cap = cap.text;
    variabile.ind = ind.text;
    variabile.tel = tel.text;
    variabile.cell = cell.text;
    variabile.fax = fax.text;
    variabile.email = email.text; //campo obbligatorio
    variabile.testomail = testomail.text;

    Codice presente in uno dei target chiamati dal tasto invio in caso di errore
    gotoAndStop (1); //ritorna al fotogramma 1 per riavviare il form

    Conclusioni
    credo che il problema consista nel fatto che quando l'utente immette i dati li memorizza in variabili che rimangono tali anche quando il campo che le ha definite nel primo tentativo di invio viene cancellato, per risolvere questo problema credo che dovrei azzerare le variabili ogni qual volta si verifica un errore. Sapete dirmi come si fa? Io ho provato con var variabile.nome = null; ma non funziona.:(


  • Super User

    Ciao 🙂

    Quando appare il messaggio 'compilare i campi obligatori ', sposti anche la timeline ?


  • User Attivo

    Il messaggio si trova più avanti sulla timeline, lo raggiungo tramite il nome che assegno al fotogramma, tutti i campi compilati continuano a vedersi, il messaggio appare su un altro livello che sovrasta i campi, solo il pulsante invia si interrompe prima, questo per evitare che mi attivi la funzione rollOut dello stesso, dopo aver visualizzato il messaggio di errore ritorna al fotogramma 1.
    Tu pensi che dipenda dal fatto che i campi non vengono cancellati prima?
    Scusa se non ho risposto subito, ero andato a mangiare.


  • Super User

    Secondo me è proprio quello il problema.
    Quando, dopo il messaggio, la timeline torna al frame 1, le variabili dichiarate nel frame vengono ricreate.

    Dovresti provare a non muovere la timeline, bensì fai un attachMovie della MovieClip che contiene il messaggio.


  • User Attivo

    per attachMovie intendi una copia dei fotogrammi da mettere in corrispondenza del messaggio di errore? ovviamente senza rendere consecutiva la sequenza, effettivamente dovrebbe funzionare, ora provo, anche se credo che le dimensioni del il file cresceranno un po' in questo modo. Scusa il chiarimento ma anche se imparo presto per me queste sono cose nuove, con flash per ora ho fatto solo spot pubblicitari senza script.
    Comunque grazie mille.


  • Super User

    attachMovie sarebbe ' attaccare ' una MovieClip dalla libreria allo stage usando il metodo attachMovie();
    Sulla guida di Flash hai un valido esempio di attachMovie 😉


  • User Attivo

    vado a controllare la guida


  • User Attivo

    ma in questo modo l'utente deve riscrivere tutti i campi se non erro, quindi se ha scritto un testo piuttosto lungo si ritroverà a doverlo riscrivere o sbaglio?


  • Super User

    Non deve riscriverli perchè non muovi la timeline e le varibili rimangono le stesse.
    Con attachMovie è come se facessi apparire una pop-up col messaggio di errrore.


  • User Attivo

    ok, sto cercando di capirci qualcosa tramite la guida ma mi sa che devo stravolgere tutto poiché non ho usato un clip filmato per usare questo metodo.


  • User Attivo

    scusa se continuo a postare, ma è un po' complicato. Se ho capito bene devo fare un clip filmato che contiene il messaggio di errore, questo clip filmato anziché essere messo direttamente sulla timeline devo richiamarlo tramite il metodo attachMovie();
    Quindi devo cambiare il codice del pulsante se non erro.
    Altra domandina, ma nel flip filmato oltre al messaggio devo mettere anche un secondo form?


  • Super User

    Ciao 🙂

    Selezioni la MovieClip col messaggio che hai nella libreria. Click destro, identificatore. Ti si apre una finestra, attiva l' opzione ' esporta per Actionscript ' e nel campo di testo identificatore scrivi: messaggio.
    Selezioni il keyframe dove si trova il pulsante. Apri il pannello azioni e scrivi:
    nomeBottone.onRelease=function()
    {
    _root.attachMovie('messaggio');
    }


  • User Attivo

    ho fatto come dici, ovvero:
    Ho creato il clip filmato contente il messaggio questo clip si chiama err nome vuoto poi facendo click destro su di esso nella libreria ho fatto proprietà e ho messo il flag su esporta per ActionScript e su Esporta nel primo fotogramma lasciando l'identificatore con il nome err nome vuotopoi ho fatto click su ok, Premetto che il clip filmato non è presente sulla timeline ma solo in libreria. perché non funziona? Questo è il codice.

    invia.onRelease=function()
    {
    if (nome == null)
    {
    _root.attachMovie('err nome vuoto');
    }
    else if (cognome == null)
    {
    gotoAndPlay("cognome vuoto");
    }
    else if (cit == null)
    {
    gotoAndPlay("città vuoto");
    }
    else if (email == null)
    {
    gotoAndPlay("email vuoto");
    }
    else
    {
    gotoAndPlay("invia");
    }
    }

    le condizioni che contengono gotoAndPlay funzionano quella che contiene _root.attachMovie no, inoltre se esporto in flash 6 funzionano le condizioni == se esporto in flash 8 va direttamente alla riga gotoAndPlay("invia"); forse devo cambiare lo script per esportare in flash 8? Esporto con ActionScript 2.0 in entrambi i casi.


  • Super User

    Non mettere spazi nel nome identificatore delle MovieClip da attaccare. Vediamo se il problema è quello.


  • User Attivo

    a ok, grazie, comunque sto rifacendo tutto col metodo attachMovie creando clip filmato differenti con diversi identificatori, speriamo funzioni, ed il problema dell'esportazione in flash8 lo risolvo con lo spazio?


  • Super User

    Non pensare ai problemi con Flash 8. Lavora su Flash 8 e sei a posto col mondo 😉

    Non muovere la Timeline 😉