Дополнительное усилие при ускорении
Добрый день, флэшеры.
Я тут делаю такую штуку. Суть в том, что когда проводишь мышью по области вокруг крестика, он вращается. И чем бьыстрее проводишь, тем быстрее он вращается. Проблема в том, что скорость вращения напрямую зависит от скорости движения указателя, но я бы хотел сделать начальную скорость вращения креста быстрее раза в два-три, чем движение мыши. Простое умножение на определенную величину(rotMultiply) дает очень странный эффект "запаздывания" или вообще не влияет на скорость вращения. Без умножения все работает нормлаьно, но скрость мала.
Вот ссылка на мувик нормальный: www.ambuddy.net/use/cross_normal.swf
Вот ссылка на мувик паранормальный: www.ambuddy.net/use/cross_paranormal.swf
Вот код:
Код:
// Дополнительное усилие
rotMultiply = 5;
// Скорость затухания
rotDecay = 0.95;
// Указатель в зоне воздействия
//isOver = false;
mouseX1 = _xmouse;
// Вращаем крестик
aCross.onEnterFrame = rotateFunc;
// Если мышь задела область влияния запускаем поворот, т.е. начинаем считать поворот
aCross.onMouseMove = ifInvolved;
// ======================
// Functions
// ======================
function ifInvolved() {
if(isOver==false && _xmouse > this._x-50 && _xmouse < this._x+50 && _ymouse > this._y-50 && _ymouse < this._y+50) {
mouseOffset = mouseX1 - _xmouse; // считаем относительно пред. значения
mouseX1 = _xmouse; // запоминаем предыдущее значение
rotOffset = mouseOffset;
rotOffset = rotOffset*rotMultiply;
}
}
function rotateFunc() {
rotOffset = rotOffset * rotDecay;
this._rotation += rotOffset;
// Если угол поворота уже слишком мал, останавливаем
if(Math.abs(rotOffset)<=1) {
rotOffset = 0;
this._rotation = Math.ceil(this._rotation);
// Если крест не встал прямо, докручиваем его
rAngle = Math.abs(this._rotation);
if(rAngle > 360) rAngle = rAngle - Math.floor(rAngle/360)*360; // убираем целое число оборотов
if(rAngle != 0 && rAngle != 90 && rAngle != 180 && rAngle != 270 && rAngle != 360) {
this._rotation = (mouseOffset>0) ? this._rotation+1 : this._rotation-1; // вперед или назад
}
}
}
|