#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) |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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) |
#5
|
|||
|
|||
Thank you for your answer and sorry to up an ancient post.
I will ask an other question in a new post. KoRnemuse |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
stopping ontimer | durf | Vizard | 4 | 06-02-2009 11:38 AM |
executable file with avatars incorrectly displayed | aa-chris | Vizard | 2 | 11-03-2008 10:28 AM |