quarta-feira, 14 de novembro de 2007

Tutorial 20: Botão rotativo 2

Esse tutorial é uma reprogramação do botão rotativo. Para fazê-lo girar, desta vez é necessário girar o mouse em torno do botão.



Leia mais! * Montagem
Utilize a mesma montagem do Tutorial 15: botão rotativo.

* Programação
Abra a janela de ActionScript (F9).
Edite o símbolo do botao.
Na timeline do botao, clique no frame 1:
apertou = false;
ax = 0;
ay = 0;
rx = 0;

dot = function(x1,y1,x2,y2) { return x1*x2+y1*y2; }
cross = function(x1,y1,x2,y2) { return x1*y2-x2*y1; }
mod = function(x1,y1) { return Math.sqrt(x1*x1+y1*y1); }
graus = function(rad) { return rad*180/Math.PI; }
angulo = function(x1,y1,x2,y2) {
cx1 = x1-_x; cy1 = y1-_y;
cx2 = x2-_x; cy2 = y2-_y;
valor = graus(Math.acos(dot(cx1,cy1,cx2,cy2)
/(mod(cx1,cy1)*mod(cx2,cy2))));
seno = graus(Math.asin(cross(cx1,cy1,cx2,cy2)
/(mod(cx1,cy1)*mod(cx2,cy2))));
if (seno<0) valor=-valor;
return valor;
}

onMouseDown = function() {
if(!this.hitTest(_root._xmouse,_root._ymouse,false))
return;
apertou = true;
ax = _root._xmouse;
ay = _root._ymouse;
rx = _rotation;
if (rx<0) rx+=360;
}
onMouseUp = function() {
apertou = false;
}
onMouseMove = function() {
if (!apertou) return;
rx += angulo(ax,ay,_root._xmouse,_root._ymouse);
ax = _root._xmouse;
ay = _root._ymouse;
if (rx>359) _rotation=359;
else if (rx<0) _rotation=0;
else _rotation = rx;
}