|
Hi,
What dragdrop.js does, is loop through all the
children of the document, and check if they overlap with the source item. I
added one layer of children checking, so if a layer has children they will be
checked for overlapping.
In the longrun I think a better way to do this,
would be to see which layers have an eventlistener added to them, and only check
them, instead of checking all layers like we do now.
Do we have a collection of objects having an
eventlistener now? (so we could do DynAPI.document.hasListener.length
)
If you use this version of dragdrop.js it will
support one level of children. (Not children of children etc.):
/*
DynAPI Distribution DragDrop Extension The DynAPI Distribution is distributed
under the terms of the GNU LGPL license.
Requirements:
dynapi.api.* */ DynObject.prototype.DragDrop=function(s){ if (!this.children.length>0) return; for (var i in this.children) { var ch=this.children[i]; if (ch.x<s.x && ch.x+ch.w>s.x+s.w && ch.y<s.y && ch.y+ch.h>s.y+s.h){ if (!ch.children.length>0)ch.invokeEvent("drop"); else{ for (var i in ch.children) { var chChild=ch.children[i]; if ((ch.x+chChild.x)<s.x && (ch.x+chChild.x)+chChild.w>s.x+s.w && (ch.y+chChild.y)<s.y && (ch.y+chChild.y)+chChild.h>s.y+s.h)chChild.invokeEvent("drop"); else ch.invokeEvent("drop"); }; }; };
}; }; DynDocument.prototype.DragDrop=DynObject.prototype.DragDrop; If anyone has an idea on how to make the function
recursive so it checks more than one layer deep, I'd be interested.
Another thing it does is check the exact size, so
the event only fires if the block is dropped completely on the target from all
sides, and not only top and left as before.
I also changed the source of the example a little,
to demonstrate a more efficient way of using eventlisteners. (using one for all
events).
(attached)
I'll put the examples up when I upgrade to the
latest code.
Cheers,
Richard Bennett [EMAIL PROTECTED]
www.richardinfo.com (Everything running on, and ported to the 19/12/2000 snapshot of DynAPI2) visit the DynAPI homepage (and FAQ) :: http://dynapi.sourceforge.net/dynapi/index.php?menu=1 Browse (and search) the mailinglist here: http://www.mail-archive.com/index.php3?hunt=dynapi
|
- [Dynapi-Help] How do I drop stuff on a child layer (a la... Chris Shreve
- Re: [Dynapi-Help] How do I drop stuff on a child la... Richard Bennett
- Re: [Dynapi-Help] How do I drop stuff on a chil... Chris Shreve
- Re: [Dynapi-Help] How do I drop stuff on a child la... Richard Bennett
- Re: [Dynapi-Help] How do I drop stuff on a child la... Chris Shreve
- Re: [Dynapi-Help] How do I drop stuff on a child la... Michael Pemberton
- Re: [Dynapi-Help] How do I drop stuff on a chil... Chris Shreve
- Re: [Dynapi-Help] How do I drop stuff on a chil... Richard Bennett
- Re: [Dynapi-Help] How do I drop stuff on a child la... Chris Shreve
