Pseudo Drag and Drop question

Jerry Balzano gjbalzano at popmail.ucsd.edu
Fri Feb 25 13:26:01 EST 2005


Thanks Alex and Wilhelm, for your assistance with my problem.  I'm off 
and running now (up to the next obstacle?).

Wilhelm, I don't know how I missed your post from Feb 6; it's clearly 
relevant.  I appreciate your re-posting for my benefit.

Happy scripting/designing/creating to all you Rev users out there,
Jerry

On Feb 24, 2005, at 3:25 AM, Alex Tweedly wrote:

>> I mainly want to know, am I right about this, that there is no easier 
>> or
>> better way?
>>
> I don't know (for sure) that there isn't an easier way - but it sounds 
> like you've done a diligent search and not found one yet, so it may be 
> time to go ahead with this way.
>
> Earlier, you said:
>
>> I foresee this "solution" scaling badly as the number of controls on 
>> the card increases.
>
> You could help the scaling performance by
>
>> to (p)
>> manage a list of potential target-controls and (q) iterate over it 
>> until I
>> find one with the mouseLoc (or some such) enters the rect of it.
>>
> Rather than a list of controls, and checking against the rect of it, 
> I'd keep a list of rectangles, as in
>  x1, y1, x2, y2, "long name of the control"
>
> Then a check that said
>
> on mouseMove newx, newy
>   if abs(newx-gLastX) < 10 and abs(newy-gLastY) < 10 then return
>   repeat for each line L in gControlList
>      if item 1 of L  < newx and newx < item 3 of L  and .... etc.
>   end repeat
> end mouseMove
>
> would be pretty quick. Only checking when the delta is big enough is a 
> help - and running through a list like this would be quick.
> In the unlikely case you do run into performance issues (because you 
> had hundreds or thousands of such controls), you could use some of the 
> fancy geometric sorting techniques to allow you to only check against 
> relatively few of them
>
*******
On Feb 24, 2005, at 2:05 AM, Wilhelm Sanke wrote:

> On  Feb 6 I responded to a similar question by Jonathan Lynch. Maybe 
> the suggestion below could be of use for you?:
>
> You could try something like the handler below in the script of the 
> dragged control:
>
> "on mousedown
> set the layer of me to top
> grab me
> put the number of graphics into Gnumber
> repeat with i = 1 to Gnumber
>   if intersect(me, grc i) then
>     put the name of grc i
> # or do whatever you want
>   end if
> end repeat
> send "mousedown" to me in 100 milliseconds
> end mousedown"
>
> The last line does the trick.



More information about the use-livecode mailing list