![]() |
|
#1
|
|||
|
|||
Here is the code of the class (same with the previous attachement)
Code:
class MusicOnOff: def __init__(self,musicObj): self. Obj = musicObj self.musicIcon = viz.addTexQuad() self.musicIcon.texture(viz.add((‘musicOff.png'))) self.musicOn = True viz.callback( viz.MOUSEDOWN_EVENT, self.onMouseDown ) def onMouseDown(self, button): if button == viz.MOUSEBUTTON_LEFT: object = viz.pick() if object.valid() == False: return if object == self.musicIcon: if self.musicOn == True: self.musicOn = False self.musicIcon.texture(viz.add((‘musicOn.png'))) self.Obj.pause() else: self.musicOn = True self.musicIcon.texture(viz.add((‘musicOff.png'))) self.Obj.play() Last edited by renama; 06-27-2010 at 12:52 AM. |
#2
|
|||
|
|||
From my experience, you can register events only once.
For example: Class A registers a viz.MOUSEDOWN_EVENT Class B registers a viz.MOUSEDOWN_EVENT Then if I recall correctly the last register will overwrite the first. What I did to resolve this, is to put all the registers in one of the main, or container, classes. Whenever an event is triggered there, the main class redirects the event to the appropiate classes or objects. In your case, I guess your main class creates an instance of the MusicOnOff class (a button), and saves it under a variable. Change to: Code:
class MusicOnOff: def __init__(self,musicObj): self.Obj = musicObj self.musicIcon = viz.addTexQuad() self.pictures = [viz.add(‘musicOff.png'), viz.add('musicOn.png')] self.musicIcon.texture(self.pictures[1]) self.musicOn = True def click(self): self.musicOn = not self.musicOn self.musicIcon.texture(self.pictures[self.musicOn]) if not self.musicOn: self.Obj.pause() else: self.Obj.play() |
#3
|
|||
|
|||
Thanks, IGoudt. You gave me a good idea for OO programming. I appreciate your help. It is your support that makes me keep searching and trying to work on it. Today I found vizact.onpick(object,fun,arg) can be used in this case. It can be called multiple times. Hope this found can help somebody who has the same coding problem in this situation
|
#4
|
|||
|
|||
I highly suggest you read the section in the documentation about events, especially the Event Basics page. It describes how to register multiple callbacks for an event using viz.EventClass.
|
#5
|
|||
|
|||
Thanks farshizzo, that is great. I need register other events,like mouse move in my class and creating Event Class solved my problem completely.
|
![]() |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Realistic Light and Shadows Using Vizard and 3DS Max | jde | Vizard | 4 | 07-13-2012 10:58 AM |
.3DS importing in Vizard and 3D Studio | jde | Vizard | 1 | 08-28-2009 03:14 PM |
Vizard tech tip: Using the Python Imaging Library (PIL) | Jeff | Vizard | 0 | 03-23-2009 11:13 AM |
Vizard tech tip: Text to Speech | Jeff | Vizard | 1 | 01-15-2009 09:39 PM |
Vizard and Augmented Reality | realvision | Vizard | 4 | 04-04-2008 10:59 AM |