Message: 10 Date: Fri, 18 Mar 2005 09:26:10 +0100 From: Malte Brill <[EMAIL PROTECTED]> Subject: Re: erratic screen updates (was Slow screen lock/unlock) To: use-revolution@lists.runrev.com Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset=US-ASCII; format=flowed

Hi Michael,

 >I didn't see any difference between wait with messages and a simple
wait.

Using the with messages form allows other messages to pass while
waiting. Otherwise your app. may be blocked while executing the wait.

Cheers,

Malte



Thanks Malte and Richard. I like the wait with messages idea.

I wanted to see if there was any practical differences between "wait with messeages" and executing the loop with a send to me routine. There was none in the two methods below. Each moves a graphic smoothly across the screen.

One surprise to me was that "wait with messages", while it allows for a screen refresh, it does not allow two handlers to operate simultaneously. To get two "balls" to move across the screen simultaneously, one needs to apply the "send" routine. I have learned this after the patient explanations of Malte and Scott.


local tLoc,tStartTime

on mouseUP
put the ticks into tStartTime
set the loc of grc "ball" to 10,100
put the loc of grc "ball" into tLoc
put 1 into i
repeat until i > 600
add 1 to item 1 of tLoc
set the loc of grc "ball" to tLoc
wait 0 with messages--allows for a screen refresh; as would "wait 0 millisec"
add 1 to i
end repeat
--doLoop 1
put the short name of me &comma&& the ticks - tStartTime & " ticks" & return after field 1
end mouseUP


--Running the above handler takes 86 ticks on my system.
--Commenting out the repeat loop and inserting the doLoop command,
--I get 87 ticks. No difference to speak of.
--I should think that each method has the same practical effect.
--It appears that the "send in 0 millisec" allows for a screen refresh and effectively replaces
--the wait 0 with messages.


on doLoop counter
if counter = 600 then
put the short name of me &comma&& the ticks - tStartTime & " ticks" & return after field 1
exit doLoop
end if
add 1 to item 1 of tLoc
set the loc of grc "ball" to tLoc
send "doLoop counter + 1" to me in 0 millisec--Allows for a screen refresh
end doLoop



But here was a surprise to me. Create two graphics objects, ball1 and ball2 with the following handlers:


Ball1 handler:

on mouseUp
  send "mouseUP" to grc "ball2"
  set the loc of me to 10,100
  put the loc of me into tLoc
  repeat 600 times
    add 1 to item 1 of tLoc
    set the loc of me to tLoc
    wait 0 with messages
  end repeat
end mouseUp

Ball2 handler:

on mouseUp
  set the loc of me to 10,140
  put the loc of me into tLoc
  repeat 600 times
    add 1 to item 1 of tLoc
    set the loc of me to tLoc
    wait 0 with messages
  end repeat
end mouseUp

When I send "mouseUP" to ball1, these handlers run successively, not simultaneously--synchronously and not asynchronous.

I would have thought that the "wait with messages" would allow then to run simultaneously. The "wait with messages" in ball1 does not wait for the messages in ball1. To get that behavior I have to use the "send to me" in at least one object.

Still learning,

Jim
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to