sorry forgot to ask, I didn't understand what the following line does:
if (ch.DragDrop(s,e)) return true;
my collision detection algorithm works whether its included or not, so why 
is it needed?

Mark
>Date: Fri, 22 Mar 2002 11:55:46 +0000
>To: [EMAIL PROTECTED], [EMAIL PROTECTED]
>From: Mark Proctor <[EMAIL PROTECTED]>
>Subject: Re: DragDrop and listener firing on overlap
>Cc: [EMAIL PROTECTED]
>
>okay I've been working on the "overlap" collision detection, using a 
>simple bounding box algorithm - it seems to work fine.
>Where do we go from here, any suggested changes? I think we should give 
>the user the opportunity of choosing the drop event they are looking for - 
>possibly as described below  - how would I implement this, different 
>include files?:
>DrapDrop
>DragOverLap
>DragEnclose
>What about optimisation? Is there or can we build global arrays for each 
>listener type, holding all the objects registered for that listener?
>
>Regards
>
>Mark
>PS which list should I be sending this to - is it a help question, or a 
>dev question? Last time advice was offered on help, but I think its more a 
>dev question so am sending it to both for now.
>------------------------code---------------------------------------------------------------------------
>DynObject.prototype.DragDrop=function(s,e){
>         if (!this.children.length>0) return false;
>         var ch,chX1,chY1,chX2,chY2,sX1,sY1,sX2, sY2;;
>         sX1 = s.getPageX();
>         sY1 = s.getPageY();
>         sX2 = sX1 + s.getWidth();
>         sY2 = sY1 + s.getHeight();
>
>         for (var i in this.children) {
>                 ch=this.children[i];
>                 if(ch!=s) {
>             chX1 = ch.getPageX();
>             chY1 = ch.getPageY();
>             chX2 = chX1 + ch.getWidth();
>             chY2 = chY1 + ch.getHeight();
>             if ((chY1<=sY1&&chY2>=sY1||  //top overlap
>                  chY1<=sY2&&chY2>=sY2||  //bottom overlap
>                  chY1>=sY1&&chY2<=sY2)&& //horizontallly enclosed
>           (chX1<=sX1&&chX2>=sX1||  //left overlap
>            chX1<=sX2&&chX2>=sX2||  //right overlap
>            chX1>=sX1&&chX2<=sX2)) {
>                           //if (ch.DragDrop(s,e)) return true;
>                                 ch.invokeEvent("drop");
>                                 return true;
>                         }
>                 }
>         }
>         return false;
>};
>--------------original 
>message------------------------------------------------------------------------------------
>I posted this on the help mailing list, but thought its probably more a 
>development issue:
>
>I have drag drop working without a problem, but I notice it only fires the 
>listener if the mouse is released over the target. I'm about to try and 
>write something that will fire if there is any over lap at all between 
>source and target layers - has any work been done on this, does anyone 
>have any pointers?
>
>My reasoning for doing this is that I'm trying to build a system where a 
>user can position layers, but layers are not allowed to overlap - so if 
>someone moves one layer over the other it should snap to the correct 
>position to avoid overlapping.
>-----------------------------
>on further thought I think there are several events you might want to 
>listen for:
>drag and drop with mouse released within target area
>drag and drop with source and target overlapping
>drag and drop with source entirely enclosed within target
>drag and drop with target totally enclosed within source
>
>Anyone working on any of those? I'm going to start work on the one of 
>interesting to me, the overlapping one, but it would be nice to build a 
>framework for all of these, and any others I have forgotten. Other reasons 
>why the overlapping one might be good as it allows animated layers to 
>interact, you could do a demo of  balls bouncing into each other etc.


_______________________________________________
Dynapi-Dev mailing list
[EMAIL PROTECTED]
http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/

Reply via email to