Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   нестандартный Drag'&'Drop (http://www.flasher.ru/forum/showthread.php?t=58510)

hulio 22.05.2004 20:18

нестандартный Drag'&'Drop
 
помогите пожалуйста решить такую проблему:
мне нужно сделать так, чтобы мувик (точку), можно было таскать не в прямоугольной области, а по определенной линии (например, по окружности).
я вот тут пытался что-то сам написать, но как то странно работает.
представляю на ваш суд:
_root.point_mc.onPress=function(){
this.startDrag(true, x0-radius,this._y,x0+radius,this._y);
this.onMouseMove=function(){
this._y=Math.sqrt(radius*radius-(this._x-x0)*(this._x-x0))+y0;
this.stopDrag();
this.startDrag(true, x0-radius,this._y,x0+radius,this._y);
}
/* (x0,y0) -координаты центра окружности, по которой будем таскать мувик point_mc
radius - радиус этой окружности */
_root.point_mc.onRelease=fuction(){
this.stopDrag();
}


это конечно не по окружности будет движение, а по полуокружности, но даже не это важно.
не работает обработчик onRelease.
то есть мувик не отпускается, а продолжает таскаться за мышкой.
объясните пожалуйста, в чем дело.
а лучше предложите более эффективный код.

silin 22.05.2004 23:18

вариант
Код:

r=100;
y0=x0=200;
point_mc.onPress=function(){
        this.onEnterFrame=function(){
                var fi=Math.atan2(_ymouse-y0,_xmouse-x0);
                this._x=x0+r*Math.cos(fi);
                this._y=y0+r*Math.sin(fi);
        }
}

point_mc.onRelease=point_mc.onReleaseOutside=function(){
        delete this.onEnterFrame;
}


artfla$her 23.05.2004 00:46

Вариант другой - создать изображение области перетаскивания, просто нарисовав его и превратив в клип. Потом постоянно сверять на совпадение мыши и этой области через hitTest() (в случае с мышью совпадение будет очень даже точным). Это если надо сделать в определенных нестандарных границах. В противном случае - вариант silin-а как раз.

hulio 23.05.2004 15:01

спасибо за помощь, вечерком попробую сделать, как вы говорите.


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

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