Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    AttachMovie che non funziona

    Ciao a tutti ragazzi!
    Dovrei fare una cosa in actionscript apparentemente semplice... Ma come al solito sorgono i problemi.

    Dunque... Tramite AS prendo un movieClip dentro alla libreria e devo inserirlo nello stage più volte con nomi diversi, ad altezze diverse.
    Vi allego l'actionscript che ho realizzato:

    altezza=0;
    cont=0;
    for(i=1;i<=10;i++){
    _root.createEmptyMovieClip("oggetto"+i,1)
    _root["oggetto"+i].attachMovie("quadrato","quadrato"+i,1);
    _root["oggetto"+i]._y=altezza;
    altezza=altezza+50;
    cont++;
    }

    Il codice è molto semplice: grazie al ciclo "for" prendo dieci volte l'oggetto dalla libreria, lo attacco sullo stage e ogni volta cambio altezza e nome istanza.

    Purtroppo però il risultato è che si vede solo l'ultimo oggetto inserito... Gli altri 9 sono come spariti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    65
    .... riprova così.
    altezza=0;
    cont=0;
    for(i=1;i<=10;i++){
    _root.createEmptyMovieClip("oggetto"+i,_root.getNe xtHighestDepth()+i);
    _root["oggetto"+i].attachMovie("quadrato","quadrato"+i,_root["oggetto"+i].getNextHighestDepth()+i);
    _root["oggetto"+i]._y=altezza;
    altezza=altezza+50;
    cont++;
    }

  3. #3
    Grandissimo!!! Ora funziona.
    E se volessi dare ad ogni movieclip un getURL diverso?
    In questo modo sembra non funzionare:

    _root["oggetto"+i].onRelease= function () {
    getURL("pagina"+i+".html","_blank");
    };

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    65
    non vedo errori in quello che hai scritto.
    l'unica cosa che non so è:

    la chiamata onRelease, è dentro o fuori al ciclo?

    in ogni caso, se è fuori non funziona sicuramente, mentre se scrivi così DEVE funzionare.

    Codice PHP:
    altezza=0;
    cont=0;
    for(
    i=1;i<=10;i++){
    _root.createEmptyMovieClip("oggetto"+i,_root.getNextHighestDepth()+i);
    _root["oggetto"+i].attachMovie("quadrato","quadrato"+i,_root["oggetto"+i].getNextHighestDepth()+i);
    _root["oggetto"+i]._y=altezza;
    altezza=altezza+50;
        
    _root["oggetto"+i].onRelease= function () {
    getURL("pagina"+i+".html","_blank");
    };
        
    cont++;


  5. #5
    Purtroppo a tutti gli "onRelease" viene dato il valore della "i" a ciclo finito, quindi tutti i movieclip richiamano la stessa pagina!

  6. #6
    Oltre al fatto che alcune volte l'onRelease non viene nemmeno abilitato per il movieClip....

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Gli eventi che vengono gestiti da azioni non riconducibili al flusso naturale del programma, sono detti asincroni, poichè non è possibile stabilire il momento in cui quel determinato evento accadrà.
    E' il caso ad esempio degli eventi gestiti dall'utente, come i click sui pulsanti. Perciò anche se tu scrivi la funzione nel ciclo, gli stai dicendo solamente che quella funzione dovrà essere eseguita sfruttando "i", che nel ciclo contiene il valore corretto, ma quando l'azione di onRelease viene eseguita, il pulsante andrà a cercare il valore del momento di "i", che nel caso di un ciclo sarà sempre l'ultimo valore assunto da "i" che è poi quello che fa terminare il ciclo stesso.
    Per gestire quella variabile in libertà, basta assegnarla ad ogni pulsante durante il ciclo, così ogni pulsante avrà al suo interno come variabile, solo il valore che assume la i nel momento in cui viene gestito quel pulsante.

    Riprendendo il codice scritto da Perro e aggiungendo quanto detto, avremo (ho corretto due cosette):

    codice:
    for(var i=1; i<=10; i++){
        var L = Number(i-1);
        var mc = _root.createEmptyMovieClip("oggetto"+i,_root.getNextHighestDepth());
        mc.attachMovie("quadrato","quadrato", 1);
        mc._y = L*50;
        mc.i = i;
        mc.onRelease= function () {
            getURL("pagina"+this.i+".html","_blank");
        };
    }

  8. #8
    Grazie mille and80, hai perfettamente ragione. Ho anche notato che l'onRelease non sempre funziona con i Movie Clip... Ho risolto con on(mouse down){ quando il puntatore si trova sopra al mc! Devo solo trovare il modo per far diventare il puntatore del mouse la manina come quando è sopra ad un link...

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da thirdeyeblind82
    Grazie mille and80, hai perfettamente ragione. Ho anche notato che l'onRelease non sempre funziona con i Movie Clip... Ho risolto con on(mouse down){ quando il puntatore si trova sopra al mc! Devo solo trovare il modo per far diventare il puntatore del mouse la manina come quando è sopra ad un link...
    Ma no, funziona sempre correttamente, se non ti funziona a volte è per altri motivi.

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.