#1
|
|||
|
|||
timer counter
Is it possible to count how many times a timer has been called back (without the use of a counting variable)?
viz.elapsed() gives me the same numbers every time because it's only counting how long THIS instance has run. what about all instances? thanks! |
#2
|
|||
|
|||
i guess this is a better question:
i want to draw a line between the coordinates an object was at two seconds ago and the coordinates the object is at now. so i ran a timer to repeat every 2 seconds. the problem is obvious, and i would imagine the solution is equally so. i just can't figure it out. the first time the function runs, i am told the variable 'oldLoc' is not defined. but if i define it in the first line of the function, it will be initialized every time the function is run and it will always be '[0,0,0]'. how can i work around this? i figure i could run a counter that assigns an arbitrary coordinate to 'oldLoc' the first time the function is run. but no matter how i do it, that counter is reset (initialized) every time the function is invoked. hope this makes sense. thanks! Code:
def mytimer(num): newLocs = [] for x in range(numLights): newLoc = balls[x].get(viz.POSITION) newLocs.append(newLoc) viz.startlayer(viz.LINES) viz.vertexcolor(1,0,1) viz.linewidth(1) #print 'newLocs[',x,']',newLocs[x] viz.vertex(newLoc) viz.vertex(0,0,0) tail = viz.endlayer() tails.append(tail) tail.size(0,0,0,1,viz.TIME) oldLocs = newLocs |
#3
|
|||
|
|||
You need to declare the oldLocs variable as global. Your code should look like the following:
Code:
oldLocs = [ [0,0,0] for x in range(numLights) ] #Initialize to some value def mytimer(num): global oldLocs newLocs = [] for x in range(numLights): newLoc = balls[x].get(viz.POSITION) newLocs.append(newLoc) viz.startlayer(viz.LINES) viz.vertexcolor(1,0,1) viz.linewidth(1) #print 'newLocs[',x,']',newLocs[x] viz.vertex(newLoc) viz.vertex(0,0,0) tail = viz.endlayer() tails.append(tail) tail.size(0,0,0,1,viz.TIME) oldLocs = newLocs |
|
|