Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363

    I pulsanti funzionano anche se sono coperti

    Ciao!
    Ho notato che i pulsanti rimangono attivi anche quando sono coperti da altri oggetti (che non siano pulsanti, in questo caso funziona solamente il pulsante più in alto).
    Come si deve procedere per avere dei pulsanti che diventano inattivi quando vengono coperti da altri oggetti?
    Oppure, come si può "disattivarli" quando serve? E poi come fare per riattivarli nuovamente? Grazie!

  2. #2
    Utente di HTML.it L'avatar di gobbo89
    Registrato dal
    Jun 2006
    Messaggi
    816
    Per disattivarli quando serve: istanzaPulsante.enabled = false
    Per riattivarli: istanzaPulsante.enabled = true

    Per disattivarli quando sono coperti è necessarrio usare l'hitTest [che funziona solo quando gli oggetti che coprono il pulsante sono movieclip]


  3. #3
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Originariamente inviato da gobbo89
    Per disattivarli quando serve: istanzaPulsante.enabled = false
    Per riattivarli: istanzaPulsante.enabled = true

    Per disattivarli quando sono coperti è necessarrio usare l'hitTest [che funziona solo quando gli oggetti che coprono il pulsante sono movieclip]

    Chiarissima la prima parte.

    L'hitTest invece come dovrei usarlo?
    Forse in questo modo (considera che ho guardato ora su internet cos'è e più o meno come funziona):
    - metto l'hittest sul pulsante
    - quando un movieclip è sopra al pulsante, l'hitTest intercetta la sovrapposizione e quindi eseguo il codice "istanzaPulsante.enabled = false"

    Ho capito bene? Nel caso, come farei a riabilitare il pulsante quando il movieclip sovrastante sparisce?

    Grazie mille!

  4. #4
    penso che se tu utilizzi onEnterFrame controlla continuamente... se il risultato di hitTest è false allora attivi il pulsante enabled=true, quando invece diventa true cioè collidono allora poni enabled a false...


    ciao

  5. #5
    Utente di HTML.it L'avatar di gobbo89
    Registrato dal
    Jun 2006
    Messaggi
    816
    Originariamente inviato da longline
    L'hitTest invece come dovrei usarlo?
    Allora, premetto che in generale ho smesso di utilizzare i bottoni, usando al loro posto i movieClip, che hanno tutte le funzioni dei bottoni ed in più tutte quelle della classe MovieClip.

    Quindi anche se in questo caso non sarebbe necessario, useremo solo movieClip nell'esempio [sorgente esempio]:

    - Creiamo due movieClip, uno a forma di cerchio e un altro a forma di quadrato [più grande del cerchio]
    - Chiamiamo ed istanziamo il cerchio come cerchio_mc ed il quadrato come quadrato_mc
    - Associamo al frame principale del filmato il seguente codice:

    codice:
    quadrato_mc.onPress = function() {
    	this.startDrag();
    };
    quadrato_mc.onRelease = quadrato_mc.onReleaseOutside=function () {
    	this.stopDrag();
    };
    cerchio_mc.onRelease = function() {
    	trace(this._name+" è attivo");
    };
    - Testiamo il filmato: vedremo che cliccando sopra il cerchio comparirà nell'output cerchio_mc è attivo. Sempre in modalità testa filmato, trasciniamo il quadrato sopra al cerchio e proviamo a cliccare nuovamente il cerchio: avremo sempre come messaggio cerchio_mc è attivo.

    - Per raggiungere il nostro scopo dobbiamo aggiungere al codice alcune righe [sotto inserisco in rosso le linee da aggiungere]:

    codice:
    MovieClip.prototype.copri = function(mcDaCoprire) {
    	this.onEnterFrame = function() {
    		if (this.hitTest(mcDaCoprire)) {
    			mcDaCoprire.enabled = false;
    		} else {
    			mcDaCoprire.enabled = true;
    		}
    	};
    };
    this.quadrato_mc.copri(cerchio_mc);
    quadrato_mc.onPress = function() {
    	this.startDrag();
    };
    quadrato_mc.onRelease = quadrato_mc.onReleaseOutside=function () {
    	this.stopDrag();
    };
    cerchio_mc.onRelease = function() {
    	trace(this._name+" è attivo");
    };
    E' importante che la parte in rosso venga inserita prima di tutto il codice...
    Adesso testando il filmato e trascinando il quadrato sopra il cerchio, quest'ultimo deve rimanere inattivo e provando a cliccarlo non deve comparire nessun messaggio. Se spostiamo nuovamente il quadrato il cerchio torna attivo


  6. #6
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Wow grazie, appena avrò un attimo lo provo.
    Una domanda che viene spontanea leggendo proprio la premessa: se non usi più i pulsanti ma solo i movieclip, quando passi il mouse su un movieclip con funzionalità pulsante come gestisci il "sopra", il "giù" e il "premuto"?

  7. #7
    penso che li utilizza associando una determinata azione ai vari on(release), on (press) on (rollOver) del movieclip

  8. #8
    Utente di HTML.it L'avatar di gobbo89
    Registrato dal
    Jun 2006
    Messaggi
    816
    Originariamente inviato da longline
    Wow grazie, appena avrò un attimo lo provo.
    Una domanda che viene spontanea leggendo proprio la premessa: se non usi più i pulsanti ma solo i movieclip, quando passi il mouse su un movieclip con funzionalità pulsante come gestisci il "sopra", il "giù" e il "premuto"?
    Ci sono moltissimi metodi... I due più semplici:

    - il primo modo è come dice pippuzzo80, qui trovi la dimostrazione pratica.

    - il secondo modo consiste invece nell'assegnare delle label ai frame interni del movieClip, chiamandole _up, _over, _down. Esse simulano il bottone permettendo di assegnare al frame _up una certa forma all'_over un'altra e così via... Per i dettagli di questo metodo guarda quest'altra dimostrazione.


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.