PDA

Просмотр полной версии : нестандартный Drag'&'Drop


hulio
22.05.2004, 20:18
помогите пожалуйста решить такую проблему:
мне нужно сделать так, чтобы мувик (точку), можно было таскать не в прямоугольной области, а по определенной линии (например, по окружности).
я вот тут пытался что-то сам написать, но как то странно работает.
представляю на ваш суд:
_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
спасибо за помощь, вечерком попробую сделать, как вы говорите.