Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    26

    dichiarazione variabili in Mx 2004

    Salve ragazzi vorrei una delucidazione in merito a possibili differenze nella gestione delle variabili tra Flash Mx e Flash Mx 2004.

    In pratica avrei un piccolo Flash che mi consente da un campo di input di inserire il mio nome che viene letto poi (in un altro frame) da un campo di testo dinamico facendo il classico saluto "Ciao " + nomeutente.

    Ciò che è predisposto per il controllo del nomeutente inserito è il codice presente nel frame del campo dinamico:

    if(nomeutete + 1 == 1){
    prevFrame();
    } else {
    saluto = "Ciao " + nomeutente;
    }

    la variabile "nomeutente" è impostata nel campo di testo input mentre la variabile "saluto" in quello dinamico.

    In Flash Mx se non inserisco nessun nome l'animazione ritorna al primo frame (eseguendo quindi l'istruzione del primo IF) mentre in Flash mx 2004 passa cmq al secondo frame con l'output Ciao undefined.

    Quello che vorrei sapere NON è come risolvere questo problema bensì sapere di preciso come mai si ha questo diverso comportamento tra Mx e Mx 2004 ovvero tra AS1 ed AS2

    Grazie per le risposte.

  2. #2
    Utente di HTML.it L'avatar di NAP
    Registrato dal
    Jan 2001
    Messaggi
    4,398
    Ho decine di fla fatti con MX che aperti e pubblicati col 2004, in versione 7, non funzionano, neanche se mi metto in ginocchio sul ghiaino.

    In due anni nessuno è stato in grado di spiegarmi il perché, nemmeno i cosiddetti "guru". Quindi, dal momento che non sono masochista, pubblico i filmati in versione 6 dal: Publish Settings/scheda Flash/versione 6, E così gli swf funzionano.



    Ciao,

    NAP
    A volte la diplomazia va condita con un pizzico di siluri fotonici. (K. Janeway)

  3. #3
    Perchè devi dichiarare la variabile prima di usarla.
    Per fare un esempio semplice, questo codice

    for(a=0;a<10;a++){
    n++
    trace(n)
    }

    In As1 funziona e ti traccia i diversi valori di n.
    In As2 ti traccerà solo degli undefined...perchè n non è stata dichiarata prima, ci fai un'operazione (in questo caso l'incremento) senza averla dichiarata e averle dato un valore iniziale.
    Per far funzionare quel codice con As2 dovrebbe diventare

    n=0
    for(a=0;a<10;a++){
    n++
    trace(n)
    }

    Questa è una delle differenze che causano spesso dei problemi nel far funzionare filmati fatti con le vecchie versioni in quella nuova.
    Altro problema ad esempio è il fatto che il player 7 sia case sensitive, al contrario dei precedenti...quindi mentre un

    pippo = 10
    Pippo += 20

    Coi player fino al 6 dava come risultato 30, col player 7 non funziona, perchè pippo e Pippo vengono considerate due variabili diverse (mentre appunto nei player precedenti non era così )

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    26
    grazie per le risposte.

    Solo un'ultima cosa come potete vedere l'istruzione IF fà questo

    if(nomeutente + 1 = 1) {

    dato che nomeutente è una stringa quale operazione compie flash per valutare correttamente o meno l'ugualianza dell'espressione dato che vengono usati anche dei numeri?

    Viene fatto un casting di tipo per la stringa?
    Viene fatta la conversione numerica della stringa in modo che con la presenza del Nome utente non sia più vera l'uguaglianza?

    Grazie ancora.

  5. #5
    Di fatto quell'if non è che abbia molto senso "logico"
    Molto più sensata una cosa del tipo

    if(nomeutente == "")

    Che indica la stringa vuota

    Funzionava perchè se la variabile era "vuota" si aggiungeva 1, il risultato era effettivamente 1...però come dicevo sopra dal punto di vista logico ha poco senso

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    26
    si in effetti non posso che concordare

    Grazie per l'aiuto

  7. #7
    Di nulla, alla prossima

  8. #8
    Di fatto quell'if non è che abbia molto senso "logico"
    Invece pare abbia più senso logico di quello che sembra.

    In effetti ho notato che se la variabile non viene dichiarata flash non riconosce il suo valore come nullo:
    variabile="";

    così mi avete dato l'idea, ed ora uso questo:
    codice:
    if (_root.variabile+0!=0){}
    e funziona a meraviglia.

    Misteri di flash.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

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.