Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    problema sulle funzioni

    Ciao a tutti, sto passando da php ad action script e purtroppo molte cose non mi sono chiare. ad esempio la possibilità di riutilizzare il codice.

    per esempio, ho pensato ad un particolare effetto: passando sopra il mouse ad una scritta (in realtà è un mc) si creano delle righe su di questa.

    ora però, volevo sapere come fosse possibile far si che il codice necessario a questo effettino potesse divenire una vera e proprio funzione dove posso passare il nome di istanza di un mc così da poterlo applicare dove voglio.

    qualcuno può dirmi come rendere quindi la funzione applicabile a più oggetti?

    grazie mille!

  2. #2
    nessuno?

  3. #3
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    E' esattamente come te la immagini (a giudicare dalle tue parole):

    codice:
    function vaiAlFrame(clip, frame)
    {
    	clip.gotoAndStop(frame);
    }
    vaiAlFrame(_root.pippo, 5);
    vaiAlFrame(_root.altroClip.clipInterno);

  4. #4
    mhm, non riesco a capire cosa fa il codice che hai postato!

    a me serve in pratica poter applicare del codice a più mc, senza bisogno di dover riscrivere il codice sotto ogni mc

  5. #5
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Infatti, la funzione la scrivi una volta sola, e poi la chiami per ogni movieclip (quando ti serve). Altrimenti, puoi pensare di aggiungere un metodo alla Classe MovieClip..

  6. #6
    allora, quindi ammettendo che ho 10 mc e che voglio che al click di un mc qualsiasi si attivi la funzione deve creare una funzione


    function pippo(clip){

    with(clip){
    //codice vario

    }
    }

    e poi devo chiamare la funzione quando clicco sul mc...


    onClipEvent(mouseDown){
    this.pippo(this);
    }


    così?

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Non proprio, dal momento che il mouseDown viene attivato ovunque si clicchi, non solo sul pulsante. Dovrebbe essere quindi:
    codice:
    onClipEvent(mouseDown){
    	if(this.hitTest(_root._xmouse, _root._ymouse, true)){
    		this.pippo(this);
    	}
    }
    Dal momento però che la funzione la definisci una sola volta nella timeline principale del filmato, il comando diventa:
    codice:
    onClipEvent(mouseDown){
    	if(this.hitTest(_root._xmouse, _root._ymouse, true)){
    		_root.pippo(this);
    	}
    }
    Considerando però che ogni movieclip chiama questa funzione per se stesso (non è un pulsante che la chiama, ad esempio, e il target è sempre "this"), direi che a questo punto ti conviene creare un metodo condiviso da tutti i movieclip:
    codice:
    // nel primo frame della timeline principale
    MovieClip.prototype.pippo = function()
    {
    	// non serve il parametro, ogni movieclip la chiama
    	// per se stesso, e quindi si usa il "this"
    	with(this){
    		//codice vario
    	}
    };
    
    e
    
    onClipEvent(mouseDown){
    	if(this.hitTest(_root._xmouse, _root._ymouse, true)){
    		// niente parametri
    		this.pippo();
    	}
    }

  8. #8
    negatyve...fantastico!
    ora la provo. ascolta ma dove posso trovare qualche guida anche in inglese sui "metodi", sempre che si chiamino così!

  9. #9
    hem ora ho un altro problema!!!
    in pratica il codice che sto usando all'interno della funzione serve a far muovere il mc verso una meta stabilita. Il codice è lo stesso di un qualunque esempio di oggetto che si sposta verso il puntatore del mouse, solo che la coordinate di destinazione non sono quelle del cursore, ma altre che decido io...


    il problema è che questo codice funziona su più frame:
    ad ogni frame viene calcolata la distanza e viene spostato il mc clip più vicino alla destinazione.

    scrivendo il codice così:
    codice:
    //codice nel primo frame
    
    MovieClip.prototype.pippo = function() {
    	// non serve il parametro, ogni movieclip la chiama
    	// per se stesso, e quindi si usa il "this"
    	with (this) {
    		//codice vario
    		x = 400;
    		y = 400;
    		distanza_x = x-_x;
    		distanza_y = y-_y;
    		vai_x = distanza_x/5;
    		vai_y = distanza_y/5;
    		c_x = _x+vai_x;
    		c_y = _y+vai_y;
    		_x = c_x;
    		_y = c_y;
    	}
    };
    
    //codice associato al mc
    
    onClipEvent(mouseDown){
    	this.pippo();
    }
    il problema è che tutto funziona, ma per il primo frame...quindi devo renderlo in qualche modo ripetitivo ad ogni frame...ma come??? :master:

    secondo problema che nn mi è molto chiaro:
    come posso applicare questo codice ad altri mc?
    mi basta fare??
    codice:
    _root.nome_mc.pippo();
    grazie e ciao!

  10. #10
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    onClipEvent(enterFrame){
    	this.pippo();
    }

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.