Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Menu con rettangolino che si ridimensiona

    Ciao a tutti!
    Ovviamente ho un problema...
    Dal titolo non si capisce molto, ma ora mi spiego meglio.

    Il mio obiettivo è creare un menu come quello di questo sito.
    Ho usato il codice consigliato da Yassassin (che ringrazio!) in questo topic, ma vorrei fare in modo che il rettangolino si ingrandisca o rimpicciolisca a seconda della lunghezza della parola sotto cui si ferma, proprio come nel sito che ho linkato.

    Come posso fare?

    P.S. Non sono molto esperta di Flash, siate clementi
    P.S.2 Quello che ho ottenuto finora è questo swf.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Probabilemte le scritte sono dei clip filmato.
    In tal caso possiamo ricavare la lunghezza in pixel di un clip tramite il comando: _width.
    Passerà tale valore ad una variabile e ci sarà un comando che onEnterFrame dice al clip barra di dimensionarsi in _width allo stesso valore della variabile.

  3. #3
    Grazie per aver risposto Però non ci capisco molto di actionscript... vedo se per tentativi riesco a combinare qualcosa

  4. #4
    Non ci riesco Se non chiedo troppo non potresti dirmi il codice? Sono una frana, lo so...

  5. #5
    Originariamente inviato da paola84
    Non ci riesco Se non chiedo troppo non potresti dirmi il codice? Sono una frana, lo so...
    prova a fare come ha detto vagabund a sfruttare la funzione _width

    con una cosa del genere assendo che avrai i vari mc sullo stage cioè i tuoi menu basta aggiungere nello script a loro associato
    ad es x il mc1
    aggiungi questo

    riquadro._width=mc1._width;

    praticamente
    Codice PHP:
    mc1.onRollOver = function() {
        
    trace(mc1._width)
        
    clearInterval(a);
        
    pos this._x;
        
    delete this.onEnterFrame;
        
    riquadro.onEnterFrame = function() {
            
    this._x this._x+(pos-this._x)/7;
            
    riquadro._width=mc1._width;
            if (
    pos == Math.round(this._x)) {
                
    this._x pos;
                
    delete this.onEnterFrame;
            }
        };
    }; 
    prova un pò dato che nn ho provato

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  6. #6
    Grazie Crescenzo!
    Ci sono però due piccole "disfunzioni":
    [list=a][*]la barretta si allarga troppo e si posiziona un po' più a destra rispetto al bottone sotto cui si trova. Ecco qui l'swf.[*]la barretta, che dopo due secondi torna sul bottone che è stato cliccato per ultimo, ci torna con le dimensioni che ha acquisito dal bottone sotto cui è passata... è un po' un casino... Per farvi capire meglio, cliccate ad esempio su "Contatti" e dopo spostate il mouse su "Prodotti e Linee": la barretta torna sotto "Contatti" ma con le dimensioni di "Prodotti e Linee"[/list=a]

    Inoltre il comando trace(mc1._width) mi dà errore e quindi non l'ho inserito... può darsi che sia qui l'errore.

    Mi sono anche dimenticata di dire che uso Flash MX...

    Posto il codice che ho usato: dove devo intervenire?

    codice:
    function tuttoComePrima() {
    	pos = _root.menuCliccato._x;
    	larg = _root.menuCliccato._width;
    	delete riquadro.onEnterFrame;
    	riquadro.onEnterFrame = function(){
    		this._x = this._x+(pos-this._x)/7;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    	clearInterval(a);
    }
    _root.menuCliccato = mc1;
    tuttoComePrima();
    
    mc1.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc1.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		riquadro._width=mc1._width;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc1.onRollOut = function() {
    	a = setInterval(tuttoComePrima, 2000);
    };
    mc1.onRelease = function(){
    	_root.menuCliccato = this;
    }
    mc2.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		riquadro._width=mc2._width;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc2.onRollOut = function() {
    	a = setInterval(tuttoComePrima, 2000);
    };
    mc2.onRelease = function(){
    	_root.menuCliccato = this;
    }
    mc3.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		riquadro._width=mc3._width;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc3.onRollOut = function() {
    	a = setInterval(tuttoComePrima, 2000);
    };
    mc3.onRelease = function(){
    	_root.menuCliccato = this;
    }
    mc4.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		riquadro._width=mc4._width;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc4.onRollOut = function() {
    	a = setInterval(tuttoComePrima, 2000);
    };
    mc4.onRelease = function(){
    	_root.menuCliccato = this;
    }
    
    mc5.onRollOver = function() {
    	clearInterval(a);
    	pos = this._x;
    	delete this.onEnterFrame;
    	riquadro.onEnterFrame = function() {
    		this._x = this._x+(pos-this._x)/7;
    		riquadro._width=mc5._width;
    		if (pos == Math.round(this._x)) {
    			this._x = pos;
    			delete this.onEnterFrame;
    		}
    	};
    };
    mc5.onRollOut = function() {
    	a = setInterval(tuttoComePrima, 2000);
    };
    mc5.onRelease = function(){
    	_root.menuCliccato = this;
    }

  7. #7
    x farla tornare sul primo cliccato ed impostare le dimensioni

    ti basta
    Codice PHP:
    function tuttoComePrima() {
        
    pos _root.menuCliccato._x;
        
    larg _root.menuCliccato._width;
        
    delete riquadro.onEnterFrame;
        
    riquadro.onEnterFrame = function(){
            
    riquadro._width=mc1._width
            
    this._x this._x+(pos-this._x)/7;
            if (
    pos == Math.round(this._x)) {
                
    this._x pos;
                
    delete this.onEnterFrame;
            }
        };
        
    clearInterval(a);
    }
    _root.menuCliccato mc1;
    tuttoComePrima(); 
    ovviamente x poter cambiare le posizioni dato che la barretta diventa + grande o + piccola a seconda dei casi
    agirai su questa riga del codice aplicato ai pulsanti

    this._x = this._x+((pos-this._x)/7)-valore;
    dove valore lo metti a seconda del pulsante
    ad es potrebbe essere o bastare 5 pixel quindi in quel caso

    this._x = this._x+((pos-this._x)/7)-5;


    Codice PHP:
    mc3.onRollOver = function() {
        
    clearInterval(a);
        
    trace(mc3._width)
        
    pos this._x;
        
    delete this.onEnterFrame;
        
    riquadro.onEnterFrame = function() {
            
            
    this._x this._x+((pos-this._x)/7);
            
    riquadro._width=mc3._width;
            if (
    pos == Math.round(this._x)) {
                
    this._x pos;
                
    delete this.onEnterFrame;
            }
        };
    }; 
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  8. #8
    Ho provato, ma con la prima modifica che mi hai detto, la barretta tornerebbe sempre sul pulsante mc1, invece a me va bene che torni sull'ultimo che è stato cliccato.
    La seconda modifica invece sembra non avere alcun effetto :master:
    La barretta continua ad essere spostata verso destra rispetto a ciascun bottone e a non ridimensionarsi quando torna sotto l'ultimo bottone cliccato.

    Questo è il fla , nel caso qualcuno volesse darlgi un'occhiata e capirci qualcosa, perché io ci sto impazzendo :berto:

  9. #9
    Dunque, ho risolto la questione della posizione della barretta, ma non quella della dimensione: quando clicco su un bottone e poi sposto il mouse, la barretta che torna indietro non si ridimensiona...

    Help please

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.