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/