Naive Forum giochi e cartoni web

[aiuto]il mio primo gioco in flash: uno sparatutto

  • Messaggi
  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 21/06/2004 15:25
    Re: Re:
    Okkey... ho risolto il problema [SM=x409147] In pratica invece di definire un quadrato di coordinate, ho definito una linea di coordinate ^^ in questo modo nn ho più il problema :canta. Ecco la funzione
    function randomPositi0n(bersaglio, massimoX, xRandom) {
    	// calcolo il massimo valore di random per larghezza ed altezza
    	massimoX = 550;
    	// genero il valore random
    	xRandom = random(massimoX);
    	// assegno le coordinate random al MC
    	_root.kappa._x = xRandom;
    }
    





    DeaNera®


  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 21/06/2004 18:58
    Re: Re: Re:
    Ok nuovo problema! (accidenti sviluppare un gioco è molto più complicato di quanto pensassi :roll )
    Allora in pratica sto cercando di organizzare il gioco in modo che quando si raggiunge un certo punteggio (oppure dopo un tot di tempo e con un punteggio minimo.. nn lo so devo ancora decidere) si cambia livello e quindi l'animazione del bersaglio diventa più veloce.
    Per facilitare la comprensione di quello ke ho appena detto vi posto il link così potete vedere a ke punto sn arrivata
    clicca qui
    In pratica quando si cambia di livello vorrei ke il bersaglio salisse su piu velocemente in modo ke sia piu difficile beccarlo...
    Un mio amico mi ha detto che posso farlo tramite AS con un onEnterFrame, ma nn riesco a far muovere il mio bersaglio :triste :lacrime
    vi posto il codice

    onClipEvent (enterFrame) {
    	_y-=(_y-_root.ypos)/3
    }
    

    Questo lo associo all'MC del bersaglio
    _root.ypos=-73;
    

    Questo all'onEnterFrame

    Il problema è ke se metto tutto su un frame l'MC nn si muove di una virgola (ovviamente opportunamente linkato alle istanze), invece se metto un loop di 2 fotogrammi... pure!!
    ki mi aiuta? :lacrime





    DeaNera®


  • OFFLINE
    bandafox
    Post: 207
    Sesso: Maschile
    Utente Junior
    00 22/06/2004 13:01
    Quella che ti posto è la funzione generica per il movimento di un mc, poi adattala come meglio credi alle tue esigenze:

    Questa è la funzione del movimento decellerato:

    function muovi(yfinale, target, vel) {
    	_root.muovitore.onEnterFrame = functi0n() {
    		if (target._y>yfinale) {
    			target._y += (yfinale-target._y)/vel;
    		} else {
    			delete _root.muovitore.onEnterFrame;
    		}
    	};
    }
    


    La metti sulla root, insieme ad un MC vuoto con nome di istanza "muovitore".

    La richiami con:

    _root.muovi(10, _root.bersaglioMC, 10);
    


    Dove il primo parametro che passi è la posizione finale che il mc bersaglio deve raggiungere, il secondo è l'istanza del movieclip da muovere e il terzo è la decellerazione (più è alto questo valore più il movieclip decellererà lentamente).

    Puoi richiamare questa funzione quando il giocatore colpisce il bersaglio, passando come nome di istanza quella del mc duplicato.

    Spero di essere stato chiaro, se hai dubbi chiedi pure ! :;

    Ciao ! [SM=x409168]
  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 22/06/2004 15:32
    Una cosa non mi è chiara Banda... perkè ci metti quell'else con cui cancelli l'MC muovitore? a ke serve??

    [Modificato da DeaNera® 22/06/2004 15.33]






    DeaNera®


  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 22/06/2004 15:54

    Ok finalmente ci sono riuscita... ma ora come faccio a far tornare l'MC giù dopo un tempo ke stabilisco io??

    [Modificato da DeaNera® 22/06/2004 15.57]






    DeaNera®


  • OFFLINE
    bandafox
    Post: 207
    Sesso: Maschile
    Utente Junior
    00 23/06/2004 11:46
    Con l'else cancello l'onEnterFrame, non l'mc, per risparmiare risorse quando non serve il movimento :;

    Per far tornare il mc in basso puoi utilizzare la stessa funzione, basta che gli passi il parametro della y finale. Per farla chiamare dopo un tot di tempo puoi utilizzare il setInterval.

    Se hai problemi chiedi pure ! [SM=x409155]

    :balletto
  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 23/06/2004 13:43

    Allora mi sono studiata la sintassi di setInterval e ne ho ricavato fuori una cosa del genere

    setInterval(_root.muovi, 3000, [0, _root.kappa.kappa_, 10]);
    


    Ora il mio problema è questo: come si usa questo cacchio di setInterval? Mi spiego: per fare muovere l'MC ho richiamato la funzione muovi nel primo fotogramma dell'MC contenente l'animazione...
    però se metto sempre nel primo fotogramma il codice che ho pastato sopra nn succede nulla.. o meglio l'MC nn mi torna giu'..
    invece semetto due setInterval con i valori diversi per la funzione muovi.. l'MC rimane fermo.
    Quindi non mi è chiaro come dovrei mettere qsto setInterval... aiuto ^^ le sto provando di tutte





    DeaNera®


  • OFFLINE
    DeaNera®
    Post: 98
    Sesso: Femminile
    Utente Junior
    00 23/06/2004 18:52

    Ho cambiato tipo di funzione

    vel = 10;
    function ar(kappa_, YY) {
    	kappa_._y += (YY - kappa_._y) / vel;
    }
    kappa_.onEnterFrame = functi0n() {
    (this._y < 115) && (KK = 1);
    (this._y > 110 && !KK) ? ar(this, 110) : ar(this, 230);
    (this._y > 225 && KK) && (delete KK, this._x = random(500));
    };
    

    [Modificato da DeaNera® 23/06/2004 19.49]






    DeaNera®


2