Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19

    Nome di movieclip che scatena evento...

    Salve a tutti,
    Avrei necessità di recuperare il nome di un movieclip che scatena un evento. In pratica la situazione è questa: ho più di un movieclip (circa una decina) che richiamano la stessa funzione sull'evento onRollOver. All'interno della funzione dovrei sapere quale movieclip l'ha richiamata, in modo da eseguire diverse istruzioni a seconda della sorgente dell'evento.
    La cosa puà sembrare semplice, ma la complicazione è dovuta al fatto che i movieclip in questione sono creati dinamicamente in base ai dati provenienti da una pagina ASP. Non ho dunque modo di sapere a priori quali e quanti saranno e, di conseguenza, non posso creare funzioni diverse da assegnare ai vari movieclip.
    Dal momento che i movieclip sono istanziati dinamicamente, ciclando un array in cui sono immagazinati i dati della pagina ASP, avevo provato a fare lo stesso con le funzioni:

    codice:
    for (i=0;i<valori.length;i++)
       {
        duplicatemovieclip(Ship, "Ship" + i; 999-i)
        _root["Ship" + i].onRollOver = function()
                                          {
                                            Mouse_Su(i)
                                          }
       }
    Il codice sopra riportato funziona in parte: com'è facilmente prevedibile, il cambiamento della variabile "i" ad ogni ciclo interessa anche quanto definito per i movieclip precedenti. Alla fine mi ritrovo dunque tutti i movieclip che richiamano la funzione "Mouse_Su" passandogli lo stesso parametro, che è in effetti l'ultimo valore assunto dalla variabile "i" all'uscita del cliclo. Da qui l'idea di far "riconoscere" alla funzione il movieclip che la richiama. Soluzioni?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Uanne
    Registrato dal
    Nov 2001
    Messaggi
    483
    for (i=0;i<valori.length;i++){
    duplicateMovieClip(Ship, "Ship" + i, 999-i)
    _root["Ship" + i].onRollOver = function(){
    questo=String(this);
    questo = questo.substring(questo.length-1,questo.length);
    Mouse_Su(questo);
    }
    }
    Attenzione che su duplicateMovieClip non ci va il punto e virgola tra gli argomenti, ma la virgola
    A me mi dà la carica, agli italiani gli dà la carica

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    19
    Grazie mille, mi hai aiutato a risolvere un bel rompicapo. Alla fine il codice Action Script è piuttosto simile a JavaScript...avessero implementato anche un utilizzo altrettano efficace del metodo "eval" avrei risolto molto prima. Ad ogni modo, bene così. Grazie di nuovo.

  4. #4
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,322
    si poteva fare anche con eval

    prova questo esempio

    on(release){
    mia=targetPath(this)
    ciccio=eval(mia)
    ciccio._xscale=200
    trace(ciccio._xscale)
    trace(mia)
    }

  5. #5
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,322
    sul tuo esempio


    for (i=0; i<20; i++) {
    duplicateMovieClip(Ship, "Ship"+i, 999-i);
    _root["Ship"+i]._x=_root["Ship"+(i-1)]._x+20
    _root["Ship"+i].onRollOver = function() {
    mia=targetPath(this)
    mioclip=eval(mia)
    Mouse_Su(mioclip);
    };
    }


    function Mouse_Su(valuta){
    trace(valuta)
    valuta._xscale=120
    }

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.