Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   движение клипа к курсору (http://www.flasher.ru/forum/showthread.php?t=53099)

igrik 25.12.2003 16:32

движение клипа к курсору
 
Не получается сделать движение клипа к курсору. Кто может, помогите! Надо, чтобы клип двигался к курсору равномерно. Я тут кое-что сделал:

onClipEvent (load) {
function radiansToDedrees(radians) {
return (radians / Math.PI)* 180;
}
}
onClipEvent (enterFrame) {
point = {x:_x, y:_y};
_parent.localToGlobal(point);
deltaX = _root._xmouse - point.x;
deltaY = _root._ymouse - point.y;
rotationRadian = Math.atan2(deltaY, deltaX);
rotationAngle = radiansToDedrees(rotationRadian);
this._rotation = rotationAngle;
this._x += Math.cos((rotationAngle))*5;
this._y += Math.sin((rotationAngle))*5;
}

но проблема в том, что клип начинает колбасить на оред. расстоянии от курсора, и если двигать курсор, то клип тоже колбасит и он никуда не движется... PLEASE HELP!!!

gct 25.12.2003 17:39

В сорец не вникал, бо голова болит, но Dedrees - мне понравилось :p

igrik 25.12.2003 17:59

какая разница... смысл от этого не меняется
А на вопрос кто-нибудь ответит?

quake-pavel 25.12.2003 19:23

Можно использовать теорему Пифагора и клип будет двигаться по гипотенузе.
Например:

onClipEvent(load){
v=5
}
onClipEvent(enterFrame){
xDisp= _root._xmouse - _x
yDisp= _root._ymouse - _y
S=Math.sqrt((xDisp*xDisp)+(yDisp*yDisp))
t=S/v
xV=xDisp/t
yV=yDisp/t
_x= _x + xV
_y= _y + yV
}

:cool:

Nox Noctis 25.12.2003 19:36

так пойдет ?
Код:

onClipEvent (load) {
        Math.sign = function(n) {
                return Number(n>0 || (n<0)*(-1));
        };
        rad = 180/Math.PI;
}
onClipEvent (enterFrame) {
        dx = Math.cos(a)*5;
        dy = Math.sin(a)*5;
        if (Math.sign(_root._xmouse-_x-dx) == sx) {
                this._x += dx;
        } else {
                this._x = _root._xmouse;
        }
        if (Math.sign(_root._ymouse-_y-dy) == sy) {
                this._y += dy;
        } else {
                this._y = _root._ymouse;
        }
}
onClipEvent (mouseMove) {
        dx = _root._xmouse-_x;
        dy = _root._ymouse-_y;
        a = Math.atan2(dy, dx);
        _rotation = a*rad;
        sx = Math.sign(dx);
        sy = Math.sign(dy);
}


igrik 25.12.2003 20:28

THANKS A LOT! REALLY!!! :D


Часовой пояс GMT +4, время: 15:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.