Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42

    primo impatto con le classi di flash

    vorrei fare un menu scrivendo una sottoclasse di MovieClip per usarla per effetti grafici sui tasti del menu...allora, ho fatto così (primo frame):

    Tastomenu = function() {};
    Tastomenu.prototype = new MovieClip();
    Tastomenu.prototype.miaproprietà = 50;
    Tastomenu.prototype.onMouseUp = function() {/*funzione*/};

    Object.registerClass('meunbut', Tastomenu);

    dove menubut è l'id che ha il mio simbolo in libreria.

    nel secondo frame posiziono le varie istanze dei miei tasti sullo stage.

    cosa succede: quando clicco su uno l'effetto funziona (buono!) ma funziona
    su tutte le istanze del simbolo indistintamente (perchè?!?!)

    qualcuno può darmi una mano?

  2. #2
    Utente di HTML.it L'avatar di Uanne
    Registrato dal
    Nov 2001
    Messaggi
    483
    come perchè? :master: è ovvio che tutte le istanze del simbolo in cui hai registrato la classe prendono metodi e proprietà della classe stessa. Di cosa ti sorprendi?
    A me mi dà la carica, agli italiani gli dà la carica

  3. #3
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42
    effettivamente mi sono proprio spiegato male, ieri sera era tardi ed io stanco di combattere con le classi in flash...

    quello che succede è che se premo il tasto 1 l'effetto parte ma parte alla pressione del tasto 1 l'effettuo si attiva su tutte le altre istanze presenti contemporaneamente!

    se può aiutare a capire il problema, la funzione è questa:
    codice:
    Tastomenu.prototype.onMouseUp = function() {
    	this.onEnterFrame = function() {
    		this.t++;
    		this._x = Math.easeOutElastic(t, this.scr_start, this.rif_start, d);
    		if (this.t>this.d) {
    			delete this.onEnterFrame;
    		}
    	};
    };

  4. #4
    Utente di HTML.it L'avatar di Uanne
    Registrato dal
    Nov 2001
    Messaggi
    483
    Probabilmente devi dare un nome al metodo. Ad es.

    Tastomenu.prototype.rilascioMouse = function(){
    this.onMouseUp = function(){
    //azioni
    }
    }
    A me mi dà la carica, agli italiani gli dà la carica

  5. #5
    Utente di HTML.it L'avatar di Uanne
    Registrato dal
    Nov 2001
    Messaggi
    483
    No, scusa, rileggendo meglio mi sa che ti conviene fare così:

    Tastomenu.prototype.nomeMetodo = function(){
    //azioni
    }

    e poi lo applichi ai tasti:

    nomeTasto1.onRelease = function(){
    this.nomeMetodo();
    }

    nomeTasto2.onRelease = function(){
    this.nomeMetodo();
    }

    e così per gli altri.
    A me mi dà la carica, agli italiani gli dà la carica

  6. #6
    Utente di HTML.it L'avatar di c3k
    Registrato dal
    Jan 2002
    Messaggi
    42
    sì facendo come dici tu funziona, però sto facendo questo menù usando le classi proprio per evitare di dover ripetere di scrivere i comandi su ogni movieclip...comunque il tuo ultimo messaggio mi ha fatto arrivare a risolvere il problema: mi sono reso conto che l'effetto partiva cliccando ovunque nello stage e allora ho capito che stavo usando il gestore di eventi sbagliato...

    la soluzione era più semplice di quando sembrasse e l'ho trovata rileggendo la descrizione dei gestori di eventi della classe MovieClip:
    codice:
     
    MovieClip.onMouseUp
     Invocato quando il pulsante sinistro del mouse viene rilasciato.
     
    MovieClip.onPress
     Invocato quando il mouse viene premuto mentre il puntatore si trova sopra un pulsante.
    è bastato sostituire onPress a OnMouseUp!

    grazie per l'interessamento!

    carlo

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.