WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 04-14-2010, 01:03 PM
Josh Josh is offline
Member
 
Join Date: Jan 2010
Posts: 63
Wait for function to return?

Hi all

I want to stop the execution of my script until a function returns.

The idea is to stop the script when starting a task, where the user has to press a key (P), and as soon as he presses the key, the script should continue.

Code:
class Experiment:

        # This method is called somewhere...
	def start_green_face_task(self):
		self.avatar_to_morph().make_green_face()
		self.test_reaction_time() # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def test_reaction_time(self):
		while True:
			yield self.viztask.waitKeyDown('P', d)
			return
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face()
Sadly I don't get it to work... I tried stuff like

yield self.test_reaction_time()

or

self.viztask.schedule(self.test_reaction_time())

but somehow this doesn't do what I need...

Thanks very much for help!
Josh
Reply With Quote
  #2  
Old 04-15-2010, 06:11 AM
Josh Josh is offline
Member
 
Join Date: Jan 2010
Posts: 63
Please, this is very important for me... Anyone??
Reply With Quote
  #3  
Old 04-15-2010, 12:43 PM
Josh Josh is offline
Member
 
Join Date: Jan 2010
Posts: 63
*Push* (I'm sorry, but it's very important that I get this to work asap)
Reply With Quote
  #4  
Old 04-15-2010, 01:45 PM
IGoudt IGoudt is offline
Member
 
Join Date: Sep 2009
Posts: 20
Exactly *what* does not work? On which line does the program do other than you expect it to do?
Following changes might not work, but at least it should call test_reaction_time() correctly. Issue is that end_green_face_task() will run at the same time (I think). You can move that method call to test_reaction_time() as well, but why do you need a viztask for a key event? You can also register the P button with the function end_green_face_task()
Code:
class Experiment:

        # This method is called somewhere...
	def start_green_face_task(self):
		self.avatar_to_morph().make_green_face()
		viztask.schedule(self.test_reaction_time()) # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def test_reaction_time(self):
		yield viztask.waitKeyDown('P')
		
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face()
Reply With Quote
  #5  
Old 04-15-2010, 02:11 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
I believe the following code should do what you want:
Code:
class Experiment:

	# This method is called somewhere...
	def start_green_face_task(self):
		viztask.schedule( self.test_reaction_time() )
		
	def test_reaction_time(self):
		self.avatar_to_morph().make_green_face()
		yield viztask.waitKeyDown('P') # Here the code should stop until this method returns (when the user presses P)! But how can this be achieved?
		self.end_green_face_task() # This method should be called *after* the user presses P!
		
	def end_green_face_task(self):
		self.avatar_to_morph().remove_green_face()
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
return variable from keypress function starbug Vizard 2 01-07-2010 11:14 AM
return IDE to default config billjarrold Vizard 2 12-10-2009 06:05 PM
Sit, stay, wait? EnvisMJ Vizard 1 05-20-2009 04:36 PM
Unexpected carriage return vizmaster Vizard 3 01-23-2007 12:46 PM
plug-ins that return quaternions hotspur1 Vizard 2 02-05-2004 07:47 PM


All times are GMT -7. The time now is 05:14 AM.


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