Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    25

    Leggere una variabile cn il nome istanza

    Salve e complimenti a tutti,

    Il problema è il seguente :
    -devo realizzare in un swf un movieclip che chiamo LED il quale a seconda dello stato di una variabile diventa rosso o verde.
    Fin qui nulla di strano, ma avendo nel'swf da leggere 8 variabili o più, nn vorrei realizzare 8 movieclip che leggono 8 variabili diverse, vorrei invece associare il nome della variabile da leggere al nome dell'istanza del LED....


    Ovvero nella libreria avrò un solo LED, nel frame inserirò 8 LED con 8 nomi istanza diversi.
    Il nome della variabile visualizzata si pesca dal nome dell'istanza.

    Aggiungo :
    Ho provato così :
    var posi = (this._name) ma il valore di posi è il nome della variabile e non il suo valore!
    var posi = this._name.value mi da errore !


    Come faccio?
    Spero di essermi spiegato......
    GRAZIE

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao..
    Non ho ben capito cosa vuoi fare..

    Se nel simbolo (il clip filmato che hai nella libreria) hai inserito una variabile di nome "value", allora, una volta che hai messo le istanze sullo stage, potrai recuperare la variabile che sta all'interno di ogni istanza in questo modo:

    istanza1.value
    istanza2.value
    istanzaN.value
    ..e così via

    Dove istanza1, istanza2, istanzaN, saranno i nomi delle varie istanze..

    Non capisco il problema :master:
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    25
    allora provo a spiegarmi meglio :

    Premetto che via XML leggo il valore di led1, led2, led3............
    e mi troverò :

    _level0.led1 con il valore x
    _level0.led2 con il valore x

    "ora porei creare N° simboli LED associati ognuno al valore corrispondente ma nn ne ho voglia, voglio creare un solo simbolo LED x poter così in secondo momento cambiare skin.......

    Creo un simbolo e lo chiamo LED.
    All'interno di LED devo visualizzare il valore di una variabile (pippo)
    Sullo stage ho 8 istanze di LED ognuna con il suo nome "istanza1, istanza2, istanza3"

    Ogni simbolo mi deve leggere il valore di led corrispondente ovvero :

    istanza1.pippo deve essere uguale a _level0.led1
    istanza2.pippo deve essere uguale a _level0.led2 ecc......

    quindi con un solo simbolo potrò leggere il valore di molte variabili(_level0.xxxx) modificando il nome del'istanza ......
    spero di essermi spiegato......
    (in teoria dovrebbe essere una scemata!)

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Dovrebbe essere semplicemente così:

    codice:
    istanza1.pippo = _level0.led1
    istanza2.pippo = _level0.led2
    istanza3.pippo = _level0.led3
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    25
    Non ci siamo!
    Proviamo così :

    Sullo stage ho 8 istanze di nome LED1, LED2, LED3, LED4 ecc...... create mettendo dentro sullo stage 8 volte l'oggetto chiamato PIPPO.

    Ora entro in PIPPO :

    Dentro PIPPO ho un testo dinamico che dovrà avere il valore della variabile letta chiamiamola FRANCO.
    Se lascio tutto così ogni istanza avrà le seguenti variabili : LED1.FRANCO, LED2.FRANCO ecc...

    Il problema è che PIPPO deve AUTOVARIARSI a seconda del nome dell'istanza quindi
    LED1 dovrà visualizzare in FRANCO il valore della variabile _level0.led1
    LED2 dovrà visualizzare in FRANCO il valore della variabile _level0.led2

    Quindi il problema è che dentro PIPPO ci dovrà essere uno script più o meno così :

    FRANCO = (this._name) // in questo modo FRANCO è uguale a "LED1

    ora dovrei fare in modo che FRANCO sia IL VALORE di _level0.led1
    Io pensavo così, ma nn funziona :

    FRANCO = ("_level0."+this._name).value ma nn funziona oppure
    FRANCO = valueOf("_level0."+this._name) ma nulla da fare


    Come avrete capito questo stratagemma che nn riesco a far funzionare mi farebbe risparmiare parecchio tempo e byte xhe creo solo un oggetto PIPPO e lo metto tutte le volte che mi serve : morale se avessi 50 variabili da leggere dovrei fare 50 PIPPO mentre così ne faccio uno solo e addirittura se voglio cambiare sfondo o colore, modificando 1 solo PIPPO mi si modificano tutti 50 !
    Help ME !!!!

  6. #6
    Come avrete capito questo stratagemma che nn riesco a far funzionare mi farebbe risparmiare parecchio tempo e byte xhe creo solo un oggetto PIPPO e lo metto tutte le volte che mi serve : morale se avessi 50 variabili da leggere dovrei fare 50 PIPPO mentre così ne faccio uno solo e addirittura se voglio cambiare sfondo o colore, modificando 1 solo PIPPO mi si modificano tutti 50 !
    beh ma x questa cosa puoi semplicemente creare un clip chiamato led nella libreria lo esporti x as e poi lo puoi attaccare sullo stage quante volte ti serve e in + inviare tutte le var che vuoi.....il tutto in un semplice ciclo for oltre al fatto di poter cambiare le proprietà del clip dalla libreria in modo da cambiarlo in tutte le sue istanze nello stage in una sola volta...

    o forse non ho capito nulla......sono quasi fuso oggi

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Come avrete capito questo stratagemma che nn riesco a far funzionare mi farebbe risparmiare parecchio tempo e byte xhe creo solo un oggetto PIPPO e lo metto tutte le volte che mi serve : morale se avessi 50 variabili da leggere dovrei fare 50 PIPPO mentre così ne faccio uno solo e addirittura se voglio cambiare sfondo o colore, modificando 1 solo PIPPO mi si modificano tutti 50 !
    Ovviamente.. questo è il procedimento base che si utilizza con la programmazione ad oggetti.
    Come ha scritto crescenzo puoi istanziare il clip via action script.. oppure, come hai fatto tu, lo puoi posizionare sullo stage e istanziarlo a mano quante volte vuoi. A quel punto puoi richiamare ogni istanza (tramite il relativo nome istanza) e passare variabili, manipolare le relative timeline, applicare funzioni e via dicendo...

    Io però non capisco cos'è che ti viene difficile fare di tutto questo..

    Prendendo l'ultimo tuo esempio.
    Hai posto un campo di testo dentro PIPPO (che è un clip filmato nella libreria).
    Per scrivere dinamicamente (cioè via script), nel campo di testo, devi fare alcune cosette:
    1. assicurarti che il campo di testo sia dinamico (o eventualmente di input)
    2. includere eventualmente i caratteri se c'è bisogno (ad esempio se utilizzi caratteri non standard o se applichi delle maschere al campo di testo o in altre occasioni in cui è richiesto includere i caratteri)
    3. dare un nome istanza al campo di testo (più consigliato) oppure assegnargli una variabile (meno consigliato)

    Supponendo ad esempio di aver dato un nome istanza al campo di testo (che è più consigliato rispetto all'associare una variabile) ad esempio lo chiami "campo", e supponendo che un'istanza del clip PIPPO si chiami "LED1", a quel punto puoi scrivere, via script, sul campo di testo in questo modo:
    codice:
    LED1.campo.text = "io sono LED1";
    text è la proprietà che permette di accedere al valore del campo di testo.
    Nel caso tu abbia associato una variabile al campo di testo (ad esempio FRANCO), dovrai scrivere una cosa del genere:
    codice:
    LED1.FRANCO = "quello che vuoi";
    Ora .. cos'è che non ti è chiaro di tutto questo procedimento?

    Tornando al tuo ultimo esempio, se devi passare il valore della variabile _level0.led1, dovrai scrivere semplicemente:
    codice:
    LED1.FRANCO = _level0.led1;
    Questo, sia chiaro, che lo dovrai scrivere fuori dal clip PIPPO, ad esempio in un frame della stessa timeline dove risiede l'istanza LED1

    Avendo più istanze e volendo passare in modo dinamico e automatico i valori delle relative variabili, puoi utilizzare un cliclo for, come ha accennato crescenzo.

    Ad esempio:
    codice:
    for (var i=1; i<=50; i++){
      this["LED"+i].FRANCO =  _level0["led"+i];
    }
    Tu però, da quanto mi è sembrato di capire, stavi valutando un'altra soluzione. Cioè leggere le variabili _level0.led_N da dentro le relative istanze LED_N
    In questo caso, all'interno di PIPPO, puoi scrivere una cosa del genere:
    codice:
    FRANCO = _level0[this.toLowerCase(this._name)];
    NOTA: ActionScript2 è caseSensitive perciò ho utilizzato la funzione toLowerCase per rendere minuscola la stringa ottenuta passando il nome dell'istanza.

    Era questo ciò che cercavi di fare, giusto?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    25
    Tu però, da quanto mi è sembrato di capire, stavi valutando un'altra soluzione. Cioè leggere le variabili _level0.led_N da dentro le relative istanze LED_N
    Hai centrato perfettamente quello che cerco di fare

    Ho provato come dici tu ma trace(FRANCO) mi da undefined

    trace(this._name) mi da come risultato LED_N

    this.toLowerCase(this._name) mi da undefined !

    se invece creo una variabile FRANCO= "_level0."+ this._name
    trace(FRANCO) mi da il nome esatto della variabile _level0.LED_N ma non il suo valore !!!!!


    NON ho detto una cosa importante : Ho flash professional 8 !

    GRAZIE mille KillerWorm

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Scusa hai ragione..
    L'ultima riga che ho scritto ha qualche errore..
    Prova così:
    codice:
    FRANCO = _level0[this._name.toLowerCase()];
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    25
    nisba! risultato undefined !

    alla fine il problema è proprio fargli capire a sto flash che


    FRANCO = _level0.LED1

    : DIMMI QUANTO VALE : _level0.LED1

    se gli chiedo quanto vale FRANCO mi risponde : _level0.LED1




    AIUTO !!!

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.