Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225

    controllo movieclip duplicati

    Ho sottoposto questo problema, anche se in forma diversa già ieri, senza riuscire a trovare soluzione. Io genero, con l'istruzione


    duplicateMovieClip (nomepezzo, "nomepezzo"+"_"+i, 5);

    Dei duplicati di movieclip presenti sullo stage.
    Poi dovrei riuscire a passare il controllo al movieclip generato perchè dovrei volerlo muovere con la tastiera con l'evento onEnterFrame.
    Per prendere il controllo del duplicato ho provato a usare:


    mc = this["nomepezzo"+"_"+i];

    per poi poter scrivere

    mc .onEnterFrame = function() {

    ...

    }



    Davvero ci ho perso un sacco di tempo ieri. Se qualcuno ha la soluzione :master: sarebbe stupendo.
    Ciao

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    var mc = clipDaDuplicare.duplicateMovieClip ("nomepezzo" + "_" + i, 5);
    mc.onEnterFrame = function()
    {
    	// azioni
    };

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Finalmente ho potuto provare, ma con scarsi risultati.
    Sembra che la soluzione che mi proponi non riconosca mc dato che nella finestra di output l'istruzione trace(mc._x); mi stampa una riga vuota. Che c'è che non va?


    i = 1;
    function casual () {
    max = 7;
    min = 1;
    var randomNum = Math.round(Math.random()*(max-min))+min;
    var nomepezzo = "Pezzo"+randomNum;
    i++;
    var mc = nomepezzo.duplicateMovieClip ("nomepezzo" + "_" + i,5);

    mc._x = 50;
    trace(mc._x);


    mc.onEnterFrame = function() {
    if (Key.isDown(Key.LEFT)) {
    mc._x = (mc._x-10);
    }
    if (Key.isDown(Key.RIGHT)) {
    mc._x = (mc._x+10);
    }
    if (Key.isDown(Key.UP)) {
    mc._y = (mc._y-10);
    }
    if (Key.isDown(Key.DOWN)) {
    mc._y= (mc._y+10);
    }
    }
    }

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Con che versione del flash stai lavorando? (e per quale versione del flash player stai esportando)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Lavoro con F5, non so dove vedere la versione del Flash Player

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Allora, da parte mia il problema è che nel flash 5 il duplicateMovieClip non restituiva un riferimento al movieclip appena creato, e quindi:

    codice:
    var mc = nomepezzo.duplicateMovieClip ("nomepezzo" + "_" + i,5);
    diventa
    codice:
    this.nomepezzo.duplicateMovieClip ("nomepezzo" + "_" + i,5);
    var mc = this["nomepezzo" + "_" + i];
    Da parte tua, il problema è che nel flash 5 la sintassi dell'onEnterFrame non c'era ancora, quindi non puoi fare quella cosa lì...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Sono riuscito a arrivare fino al commento con questa piccola modifica.
    Mi stai dicendo che dopo aver creato un duplicato non posso sottoporlo all'onEnterFrame in qualche modo?



    i = 1;
    function casual () {
    max = 7;
    min = 1;
    var randomNum = Math.round(Math.random()*(max-min))+min;
    var nomepezzo = "Pezzo"+randomNum;
    i++;
    duplicateMovieClip (nomepezzo,"nomepezzo" + "_" + i,5);
    var mc = this["nomepezzo" + "_" + i];


    mc.onEnterFrame = function() {
    trace("PURE QUI...");
    if (Key.isDown(Key.LEFT)) {
    mc._x = (mc._x-10);
    }
    if (Key.isDown(Key.RIGHT)) {
    mc._x = (mc._x+10);
    }
    if (Key.isDown(Key.UP)) {
    mc._y = (mc._y-10);
    }
    if (Key.isDown(Key.DOWN)) {
    mc._y= (mc._y+10);
    }
    }
    }

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Non in quel modo. Devi associare quello script al movieclip da duplicare, in modo che anche i duplicati ce l'abbiano..

    codice:
    onClipEvent(enterFrame){
    	if (Key.isDown(Key.LEFT)) {
    		this._x -= 10;
    	}
    	if (Key.isDown(Key.RIGHT)) {
    		this._x += 10;
    	}
    	if (Key.isDown(Key.UP)) {
    		this._y -= 10;
    	}
    	if (Key.isDown(Key.DOWN)) {
    		this._y += 10;
    	}
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Ok, funziona, se si esclude il problema che anche tutti i pezzi originali, insieme al duplicato, si muovono.

    Per eliminare il problema, mi viene solo in mente di rendere gli originali non visibili, anche se non mi pare una gran soluzione...

    Altre idee?

  10. #10
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Eliminare gli originali...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.