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()