Line Tracing

Roger Guay rogerguay at centurytel.net
Fri Jan 31 18:05:01 EST 2003


Sarah, Jim

What I'm trying to do is trace a line in time as a ball is moved across 
the screen.  Near as I can tell, I want the screen to update but not 
redraw (if that makes any sense?)  I've done this in ToolBook on the PC 
but I much prefer to stay on my Mac.  Here is a description of my stack:

Create a vertical line and label it "Yaxis" and an horizontal line and 
Label it  "Xaxis" such that they intersect and define the origin  
somewhere near the lower left corner of your stack.  Create a brightly 
colored circle graphic and name it "Ball."  Create 2 fields, one for 
Theta so labeled which defines the angle from the horizon that the ball 
is being fired, and one for V so labeled which defines the velocity of 
the ball when fired.  Create a "Fire" button and insert the following 
script:

on MouseUp
   global V, Xo, Yo, Theta, T, X
   --put item 1 of the rect of graphic "Yaxis" into  Xo.  Yaxis is a 
vertical line and Xo,Yo define the origin of motion
   --put item 4 of the rect of graphic "Yaxis" into  Yo.
   put field "V" into V    ---- try a value of about 27 in field "V"
   Put the value of field "Theta" into Theta  ----try a value of 1.2 in 
field "Theta"
   set the loc of graphic "mortor" to Xo,Yo   ---- Graphic "mortor" is a 
small red round ball.
   show graphic "mortor"
   put 0 into T
   put xo into x
   put Yo into y
   play "Mortor.aiff"
   repeat while Y <= Yo + 1
     add 1 to T
     put the value of (Xo+V*cos(Theta)*T     ) into x
     put the value of (Yo - V*sin(Theta)*T + .5*T^2  ) into Y
     set the loc of graphic "mortor" to X,Y
     wait 1
   end repeat
	----------  the rest of the script results in a silly explosion at the 
last location of the mortor -------
   play  "Boom.aiff"
   hide graphic "mortor"
   set the loc of graphic "Burst" to x,Yo
   repeat 35
     show graphic "burst"
     wait 1
     hide graphic "burst"
     wait 1
   end repeat
end MouseUp



Jim has actually provided a solution for me that works well if I insert 
"wait .01" in his repeat loops.  I can only assume it has something to 
do with processing speed of the computer (I'm using a high end iMac 
with OS X.)  Without the "wait" command in the repeat loop, Jim's 
scripts are very choppy on my computer.

Finally, as I say, Jim's solution works well but I think it would 
nevertheless be more "elegant" to do this as I have in ToolBook where 
one is able to stop the screen redraw.

Thanks very much for joining in the fun, Roger




More information about the use-livecode mailing list