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/[email protected]/