Hola!
rieccomi a caccia di consigli...
dovrei realizzare l'animazione di una tendina, ovvero nulla di più di un rettangolo che al passaggio del mouse su una certa area sensibile si espande e contrae...
scorrendo il mouse verso sinistra la tendina si espande,
scorrendo il mouse verso destra la tendina si restringe...
ho realizzato la tendina come Movie Clip e gli ho associato il nome: tendina
l'area sensibile è anchessa un Movie Clip e il nome associato è: area_tendina
Lo script di seguito dovrebbe realizzare l'animazione ed è associato ad "area_tendina", solo che è scattoso e a volte non rileva il passaggio del mouse...
se qualcuno potrebbe dargli un occhiata e darmi qualche consiglio su come migliorarlo...
...sono bene accette anche idee per creare quasta animazione in modo diverso da quella da me pensata...
ecco lo script:
this.onRollOver = function(){
//trace("ho eseguito un rollover ");
if(_root.menu.aperto == 0)
{
_root.tendina._visible = true;
_root.onMouseMove = function(){
// determino il campo di azione di onMouseMove.
x_min = _root.area_tendina._x;
x_max = x_min + _root.area_tendina._width;
y_min = _root.area_tendina._y;
y_max = y_min + _root.area_tendina._width;
x_mouse = _root._xmouse;
y_mouse = _root._ymouse;
// inverto le coordinate del mouse.
spostamento_mouse = (x_max - x_mouse);
larghezza_tendina = _root.tendina._width;
// mormalizzo la dimenisione della tendina nell'intervallo 30-130 (larghezza minima e massima della tendina).
larghezza_attuale = ((spostamento_mouse * 100)/_root.area_tendina._width) + 30;
larghezza_attuale = Math.ceil(larghezza_attuale); //arrotondo per eccesso la larghezza normalizzata.
if(larghezza_attuale < 30)
larghezza_attuale = 30;
if(larghezza_attuale > 130)
larghezza_attuale = 130;
if((x_mouse > x_min) && (x_mouse < x_max) && (y_mouse > y_min) && (y_mouse < y_max))
{
if(_root.tendina._width = larghezza_attuale)
{
animazione_destra = setInterval( function(){
if(_root.tendina._width < larghezza_attuale)
{
clearInterval(animazione_destra);
delete animazione_destra;
_root.tendina._width += 1;
updateAfterEvent();
}
}
,1);
}
else
{
animazione_sinistra = setInterval( function(){
if(_root.tendina._width > larghezza_attuale)
{
clearInterval(animazione_sinistra);
delete animazione_sinistra;
_root.tendina._width -= 1;
updateAfterEvent();
}
}
,1);
}
}
}
}
}