Salve,
ho un problema che mi attanaglia da ieri:
devo realizzare una palla che viene agganciata al RollOver, e che ingrandisce se viene trascinata verso il basso, e rimpicciolisce se viene trascinata verso l'alto. Al click del mouse deve tornare alla posizione e dimensione iniziale. Non appena arriva in posizione iniziale, deve "ondeggiare" come un elastico che si rilascia.
Il mio problema sta proprio in questo effetto... Riesco a trascinare la palla,ingrandirla e rimpicciolira, rispedirla in posizione iniziale e ridimensionarla, ma non c'e' verso di farla "ondeggiare"...
Il codice che ho usato per il trascinamento, lo zoom ed il rilascio è il seguente:
I trattini indicano che lo script originale continua con altre condizioni "if" identiche, considerando altri intervalli (compreso tra 190 e 200, tra 250 e 260 ecc...).codice:grandezzax = palla._xscale; grandezzay = palla._yscale; velocita = 8; xiniziale = palla._x; yiniziale = palla._y; palla.onRollOver = function() { this.onEnterFrame = function() { startDrag(this, true); xcorrente = palla._x; ycorrente = palla._y; if ((ycorrente>yiniziale) && (ycorrente<190)) { palla._xscale = 24; palla._yscale = 24;} --------------------- --------------------- else if ((ycorrente<180) && (ycorrente>=170)) { palla._xscale = 22; palla._yscale = 22; } --------------------- --------------------- palla.onPress = function() { delete this.onEnterFrame; this.onEnterFrame = function() { stopDrag(); xcorrente = palla._x; ycorrente = palla._y; if (yiniziale>ycorrente) { percorsoy = yiniziale-ycorrente; } if (yiniziale<ycorrente) { percorsoy = ycorrente-yiniziale; } if (xiniziale>xcorrente) { percorsox = xiniziale-xcorrente; } if (xiniziale<xcorrente) { percorsox = xcorrente-xiniziale; } percorsoy2 = percorsoy/velocita; percorsox2 = percorsox/velocita; if ((xiniziale>xcorrente) && (yiniziale>ycorrente)) { palla._x += percorsox2; palla._y += percorsoy2; } if ((xiniziale>xcorrente) && (yiniziale<ycorrente)) { palla._x += percorsox2; palla._y -= percorsoy2; } if ((xiniziale<xcorrente) && (yiniziale<ycorrente)) { palla._x -= percorsox2; palla._y -= percorsoy2; } if ((xiniziale<xcorrente) && (yiniziale>ycorrente)) { palla._x -= percorsox2; palla._y += percorsoy2; }
Per realizzarel'effetto elastico,ho cercato di aggiungere alla fine dello script:
Unico modo che io conosca (suggeritomi qui) per ottenerlo (ho leggermente modificato il codice per adattarlo un pò, ad esempio, togliendo l'evento "onPress". Spero il non-funzionamento non dipenda proprio da questo....)codice:function easeIt(mc, inizio, fine, tempo) { tipo = mx.transitions.easing.Elastic.easeOut; _root.zoomma = new mx.transitions.Tween(palla, "_xscale", tipo, inizio, 144, 3, true); } function easeIt2(mc, inizio, fine, tempo) { tipo = mx.transitions.easing.Elastic.easeOut; _root.zoomma = new mx.transitions.Tween(palla, "_yscale", tipo, inizio, 130, 3, true); } bottone.onEnterFrame = function() { _root.easeIt("palla", palla._xscale, 30, 1); _root.easeIt2("palla", palla._yscale, 30, 1); prova = palla._xscale; delete palla.onEnterFrame; };
Il risultato che ottengo è che non succede niente, cioè il movie prosegue come se la parte "elastica" non fosse stata aggiunta...
Qualcuno mi suggerisce una strada, oppure una soluzione per quella che ho cercato di percorrere?

Rispondi quotando
