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

    Problema paranoia con Menu a palline

    Devo realizzare un menu con delle palle affiancate l'una all'altra. Al passaggio del mouse su una delle palle,questa deve essere agganciata e deve essere potuta trascinare in alto o in basso, ma non a destra e sinistra. L'aggancio deve avvenire soltanto se il puntatore del mouse si trova al centro della palla, e non se (ad esempio) la sfiora soltanto. Per fare questo ho creato la palla, e gli ho messo sopra una clip che rappresenta una palla più piccola (che renderò in seguito trasparente). Al RollOver, la palla trasparente diventa della grandezza della palla, per fare in modo che possa essere trascinata liberamente. Al click del mouse, oppure al RollOut sulla palla, tutto deve tornare in posizione iniziale.

    Prendo come esempio due clip: palla1 e palla2. Questo è lo script che ho usato per "palla1":

    codice:
    posxarea = area_palla1._x;
    posyarea = area_palla1._y;
    grandezzax = palla1._xscale;
    grandezzay = palla1._yscale;
    velocita = 8;
    xiniziale = palla1._x;
    yiniziale = palla1._y;
    grandezzaareaxiniziale = area_palla1._xscale;
    grandezzaareayiniziale = area_palla1._yscale;
    area_palla1.onRollOver = function() {
    	this.onEnterFrame = function() {
    		startDrag(palla1);
    		xcorrente = palla1._x;
    		ycorrente = palla1._y;
    		area_palla1._xscale = 60;
    		area_palla1._yscale = 60;
    		area_palla1._x = palla1._x;
    		area_palla1._y = palla1._y;
    		if ((palla1._x>xiniziale) || (palla1._x<xiniziale)) {
    			palla1._x = xiniziale;
    		}
    	};
    };
    area_palla1.onPress = function() {
    	delete this.onEnterFrame;
    	this.onEnterFrame = function() {
    		stopDrag();
    		area_palla1._xscale = grandezzaareaxiniziale;
    		area_palla1._yscale = grandezzaareayiniziale;
    		xcorrente = palla1._x;
    		ycorrente = palla1._y;
    		area_palla1._y = palla1._y;
    		posxarea = area_palla1._x;
    		posyarea = area_palla1._y;
    		if (yiniziale>ycorrente) {
    			percorsoy = yiniziale-ycorrente;
    		}
    		if (yiniziale<ycorrente) {
    			percorsoy = ycorrente-yiniziale;
    		}
    		percorsoy2 = percorsoy/velocita;
    		if (yiniziale>ycorrente) {
    			palla1._y += percorsoy2;
    		}
    		if (yiniziale<ycorrente) {
    			palla1._y -= percorsoy2;
    		}
    		if (yiniziale<ycorrente) {
    			palla1._y -= percorsoy2;
    		}
    		if (yiniziale>ycorrente) {
    			palla1._y += percorsoy2;
    		}
    	};
    };
    area_palla1.onRollOut = function() {
    	delete this.onEnterFrame;
    	this.onEnterFrame = function() {
    		stopDrag();
    		xcorrente = palla1._x;
    		ycorrente = palla1._y;
    		area_palla1._xscale = grandezzaareaxiniziale;
    		area_palla1._yscale = grandezzaareayiniziale;
    		if ((palla1._x>xiniziale) || (palla1._x<xiniziale)) {
    			palla1._x = xiniziale;
    		}
    		if ((area_palla1._x>xiniziale) || (area_palla1._x<xiniziale)) {
    			area_palla1._x = xiniziale;
    		}
    		area_palla1._y = palla1._y;
    		posxarea = area_palla1._x;
    		posyarea = area_palla1._y;
    		if (yiniziale>ycorrente) {
    			percorsoy = yiniziale-ycorrente;
    		}
    		if (yiniziale<ycorrente) {
    			percorsoy = ycorrente-yiniziale;
    		}
    		percorsoy2 = percorsoy/velocita;
    		if (yiniziale>ycorrente) {
    			palla1._y += percorsoy2;
    		}
    		if (yiniziale<ycorrente) {
    			palla1._y -= percorsoy2;
    		}
    		if (yiniziale<ycorrente) {
    			palla1._y -= percorsoy2;
    		}
    		if (yiniziale>ycorrente) {
    			palla1._y += percorsoy2;
    		}
    	};
    };
    Tutto funziona perfettamente, ma il problema sorge adesso. Se copio il medesimo script sulla "palla2":

    codice:
    posxarea2 = area_palla2._x;
    posyarea2 = area_palla2._y;
    grandezzax2 = palla2._xscale;
    grandezzay2 = palla2._yscale;
    velocita2 = 8;
    xiniziale2 = palla2._x;
    yiniziale2 = palla2._y;
    grandezzaareaxiniziale2 = area_palla2._xscale;
    grandezzaareayiniziale2 = area_palla2._yscale;
    area_palla2.onRollOver = function() {
    	this.onEnterFrame = function() {
    		startDrag(palla2);
    		xcorrente2 = palla2._x;
    		ycorrente2 = palla2._y;
    		area_palla2._xscale = 60;
    		area_palla2._yscale = 60;
    		area_palla2._x = palla2._x;
    		area_palla2._y = palla2._y;
    		if ((palla2._x>xiniziale2) || (palla2._x<xiniziale2)) {
    			palla2._x = xiniziale2;
    		}
    	};
    };
    area_palla2.onPress = function() {
    	delete this.onEnterFrame;
    	this.onEnterFrame = function() {
    		stopDrag();
    		area_palla2._xscale = grandezzaareaxiniziale2;
    		area_palla2._yscale = grandezzaareayiniziale2;
    		xcorrente2 = palla2._x;
    		ycorrente2 = palla2._y;
    		area_palla2._y = palla2._y;
    		posxarea2 = area_palla2._x;
    		posyarea2 = area_palla2._y;
    		if (yiniziale2>ycorrente2) {
    			percorsoy2 = yiniziale2-ycorrente2;
    		}
    		if (yiniziale2<ycorrente2) {
    			percorsoy2 = ycorrente2-yiniziale2;
    		}
    		percorsoy22 = percorsoy2/velocita2;
    		if (yiniziale2>ycorrente2) {
    			palla2._y += percorsoy22;
    		}
    		if (yiniziale2<ycorrente2) {
    			palla2._y -= percorsoy22;
    		}
    		if (yiniziale2<ycorrente2) {
    			palla2._y -= percorsoy22;
    		}
    		if (yiniziale2>ycorrente2) {
    			palla2._y += percorsoy22;
    		}
    	};
    };
    area_palla2.onRollOut = function() {
    	delete this.onEnterFrame;
    	this.onEnterFrame = function() {
    		stopDrag();
    		xcorrente2 = palla2._x;
    		ycorrente2 = palla2._y;
    		area_palla2._xscale = grandezzaareaxiniziale2;
    		area_palla2._yscale = grandezzaareayiniziale2;
    		if ((palla2._x>xiniziale2) || (palla2._x<xiniziale2)) {
    			palla2._x = xiniziale2;
    		}
    		if ((area_palla2._x>xiniziale2) || (area_palla2._x<xiniziale2)) {
    			area_palla2._x = xiniziale2;
    		}
    		area_palla2._y = palla2._y;
    		posxarea2 = area_palla2._x;
    		posyarea2 = area_palla2._y;
    		if (yiniziale2>ycorrente2) {
    			percorsoy2 = yiniziale2-ycorrente2;
    		}
    		if (yiniziale2<ycorrente2) {
    			percorsoy2 = ycorrente2-yiniziale2;
    		}
    		percorsoy22 = percorsoy2/velocita2;
    		if (yiniziale2>ycorrente2) {
    			palla2._y += percorsoy22;
    		}
    		if (yiniziale2<ycorrente2) {
    			palla2._y -= percorsoy22;
    		}
    		if (yiniziale2<ycorrente2) {
    			palla2._y -= percorsoy22;
    		}
    		if (yiniziale2>ycorrente2) {
    			palla2._y += percorsoy22;
    		}
    	};
    };

    Mi succede che l'effetto su "palla1" riesce sempre,mentre l'effetto su "palla2" riesce soltanto se non ho ancora toccato "palla1". Nel caso in cui prima trascino la clip "palla1", ed in seguito vado su "palla2", questa non si muove...
    E'come se l'esecuzione di "palla1" bloccasse quella di "palla2"...

    Qualcuno può aiutarmi please???

  2. #2

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 © 2024 vBulletin Solutions, Inc. All rights reserved.