PDA

View Full Version : Repeating timer_callbacks in for_loops


JPWann
01-14-2008, 10:10 AM
This is a beginners Q, as I have clearly missed something about how timers can be embedded in loops:

I have a function with a timer-callback so I can do frame-by-frame manipulations to a ball in flight. I can run repetitions of this ball-flight using a second timer as below:

def ballfunc(a,b,c,d,e):
. StartT = viz.tick()
. def balltimer(timernum):
. ball.setScale....etc...
.
. viz.callback(viz.TIMER_EVENT,balltimer)
. viz.starttimer(1,0.02,48)
vizact.ontimer2(2,10,ballfunc,0,0,-1,1,0.5)

But what I actually want is to nest ballfunc in a for_loop so I can pass it different parameters for each repetition. But my clumsy attempts to do this don't work (see below). How do I run, say 10 reps of ballfunc with different parameters passed to it each time ?:

def BallFlight():
. for i in range(0,9):
.. ball.setPosition(ball.initial)
.. yield viztask.runAction(ball,ballfunc(0,0,-1,1,SCALESEQ[i]))
.. yield viztask.waitTime(2)
viztask.schedule( BallFlight() )

farshizzo
01-14-2008, 11:01 AM
Just call the function in each iteration of the loop in your BallFlight task:def BallFlight():
for i in range(0,9):
ball.setPosition(ball.initial)
ballfunc(0,0,-1,1,SCALESEQ[i])
yield viztask.waitTime(2)
viztask.schedule( BallFlight() )

JPWann
01-15-2008, 02:55 AM
Thanks Frashizzo,

I thought I'd tried all the combinations of my version - but see my error now - excellent support !