![]()  | 
	
| 
		 
			 
			#1  
			
			
			
			
			
		 
		
	 | 
|||
		
		
  | 
|||
| 
		
	
		
		
			
			 
				
				Timer Actions problem
			 
			
			
			Hello, 
		
		
		
		
		
		
		
		
			I wrote a small script basically want to play some animation paths in a specific schedule and every animation path can be played more than once. In this script, I create an animation path for a ball and another animation path for a duck. The array time_to_go[] and object[] make a schedule for the ball and duck. Here I would like firstly duck start to move; and after 3 seconds, ball start to move; and after another 3 seconds, ball start to move again. Then done. unfortunately the ball will start the 3rd time after my schedule. Could somebody help me diagnose what's wrong with it. Thanks, Code: 
	import viz
import math
viz.go()
viz.clearcolor(0.5,0.5,1)
viz.add('tut_ground.wrl')
#Add 2 models.
#One is a ball, the other is a duck.
model = []
ball = viz.add('ball.wrl')
duck = viz.add('duck.cfg')
model.append(ball)
model.append(duck)
#Add the path.
#path[0] is for the ball, path[1] is for the duck.
path = [] 
for x in range(2):
	pa = viz.addAnimationPath()
	path.append(pa)
positions = [ [5,1,6], [0,1,3], [-150,1,6] ]
for x in range(len(positions)):
    cp = viz.addControlPoint()
    cp.setPosition(positions[x])
    path[0].add(cp,x+1)
    path[1].add(cp,x+1)
for x in range(2):
	path[x].constantspeed(viz.ON,10)
	path[x].loop(viz.OFF)
	path[x].translatemode(viz.BEZIER)
	path[x].setAutoRotate(viz.ON)
#Link the model to a path.
ball.link(path[0])
duck.link(path[1])
def mytimer(num):
	for x in range(2):
		pos = model[x].getPosition()
		if pos[0] < -15 :
			path[x].pause()
			path[x].reset()
			model[x].setPosition(0,0,0)
def donothing():
    pass
#The following arrays means:
#Firstly: duck start to move
#After 3 seconds, ball start to move
#After another 3 seconds, ball start to move again
time_to_go = [0, 3, 6] 
object = [1, 0, 0] #1 means duck, 0 means ball
#Create an array of timer action
myTimerAction = []
for x in range(3):
	if (x == 0) : 
		myTimerAction.append(vizact.ontimer2(0, 1, donothing))
		path[object[0]].play()
	else: 
		wait = time_to_go[x] - time_to_go[0]
		myTimerAction.append(vizact.ontimer2(wait, 1, path[object[x]].play))
	
	
viz.callback(viz.TIMER_EVENT,mytimer)
viz.starttimer(0,0,viz.PERPETUAL)
Last edited by whj; 04-08-2009 at 01:41 PM.  | 
		
  | 
	
		
  | 
			 
			Similar Threads
		 | 
	||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| array problem | mrvr | Vizard | 8 | 03-10-2014 10:20 PM | 
| Sound Looping Problem | JMOwens | Vizard | 4 | 09-29-2010 10:42 PM | 
| Timer speed | Jerry | Vizard | 1 | 12-08-2006 12:01 PM | 
| problem with female animations | vmonkey | Vizard | 1 | 10-07-2005 11:36 AM | 
| Weird lagging/choppiness when avatars perform actions | vjonshih | Vizard | 8 | 11-30-2004 05:08 PM |