WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 04-19-2013, 06:55 AM
andy_k andy_k is offline
Member
 
Join Date: Apr 2013
Posts: 1
Am I using 'ontimer' incorrectly?

I am very new to programming in Vizard, but I am a pretty strong .js programmer. I have an art gallery and I want a man to walk from picture to picture. He needs to wait for a few seconds at each picture.

So I have a number of walking sequences and I'm trying to use the 'ontimer' function to call the next walk sequence and also add a few seconds of delay.

It works perfectly the first time it is called, in dostuff(), but doesn't work at all in dostuff2(). I assume I am using 'ontimer' incorrectly, could anyone explain where I am going wrong?

Any help or advice would be hugely appreciated!


walkOne = vizact.walkto(4, -0.5, 4)
turnOne = vizact.turn(60)
walking_sequence = vizact.sequence( [walkOne, turnOne])


walkTwo = vizact.walkto(5.350, -0.5, -2)
turnTwo = vizact.turn(60)
walking_sequenceTwo = vizact.sequence( [walkTwo, turnTwo])


def dostuff():
male.addAction(walking_sequence)
vizact.ontimer(10,dostuff2)

def dostuff2():
male.addAction(walking_sequenceTwo)
print(vizact.ontimer)
vizact.ontimer(20,dostuff)
Reply With Quote
  #2  
Old 04-19-2013, 10:34 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,461
Instead of using timer functions you could insert vizact.waittime actions into the avatar's action sequence. The gallery.py world demo (Help -> World Demos) shows an example of that. Also, take a look at task functions, which are useful for controlling program flow.

I'm not sure if one of the vizact.ontimer commands is within a function. Please use the code tags to preserve indentation. If you only want a timer function to be called once, register the function with the ontimer2 command and set the repeats parameter to 0.
Reply With Quote
  #3  
Old 04-18-2014, 02:18 AM
KoRnemuse KoRnemuse is offline
Member
 
Join Date: Apr 2014
Location: Mougins FRANCE
Posts: 7
Hello everyone!
I post here cause I have a question about the using of ontimer.

I know that ontimer call a function but whenever I try to call a function which needs an argument I got an error on the type of my argument. It says 'Nonetype' object is not callable.

I precise that I created the argument before calling ontimer.

Here's what I want to do:

init = False
vizact.ontimer(0,suivi(init))

I can tell that my function is working perfectly because I tried it without the timer on.

Cheers KoRnemuse
Reply With Quote
  #4  
Old 04-18-2014, 10:07 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
In the future, please create a new post for your questions.

The vizact.ontimer command is expecting a function object as the second argument. Instead, you are giving it the result of calling the suivi function. You should just pass the function instead of calling it:
Code:
# Call 'suivi' every frame with 'init' argument
vizact.ontimer(0, suivi, init)
Reply With Quote
  #5  
Old 04-22-2014, 08:17 AM
KoRnemuse KoRnemuse is offline
Member
 
Join Date: Apr 2014
Location: Mougins FRANCE
Posts: 7
Thank you for your answer and sorry to up an ancient post.

I will ask an other question in a new post.

KoRnemuse
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
stopping ontimer durf Vizard 4 06-02-2009 12:38 PM
executable file with avatars incorrectly displayed aa-chris Vizard 2 11-03-2008 11:28 AM


All times are GMT -7. The time now is 04:06 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC