[Sur] Problema con SugarGame

Flavio Danesse fdanesse en gmail.com
Mar Mayo 22 17:42:52 EDT 2012


*Sugar Game y olpc game, hacen algo como esto:*

class PygameCanvas(gtk.EventBox):
def __init__(self):
gtk.EventBox.__init__(self)
self.set_flags(gtk.CAN_FOCUS)
self.setup_events()
self.socket = gtk.Socket()
self.add(self.socket)
self.button_state = [0,0,0]
self.mouse_pos = (0,0)

def setup_events(self):
self.set_events(gtk.gdk.KEY_PRESS | gtk.gdk.EXPOSE |
gtk.gdk.POINTER_MOTION_MASK | \
            gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.BUTTON_MOTION_MASK |
\
            gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
 self.connect("key-press-event", self.keypress)
self.connect("button_press_event", self.mousedown)
self.connect("motion-notify-event", self.mousemotion)
self.connect('expose-event', self.expose)
self.connect('configure-event', self.resize)
self.connect("focus-in-event", self.set_focus)

def keypress(self, selfmain, event, parametros= None):
nombre = gtk.gdk.keyval_name(event.keyval)
tipo = pygame.KEYDOWN
unic = str.lower(nombre)
valor = nombre
try:
valor = getattr(pygame, "K_%s" % (str.upper(nombre)))
except:
print "no has programado la traduccion de esta tecla: ", nombre
return False
evt = pygame.event.Event(tipo, key = valor, unicode = unic, mod = None)
try:
pygame.event.post(evt)
except:
pass
return False

def mousedown(self, widget, event):
evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN,
button = event.button, pos=(int(event.x), int(event.y)))
try:
pygame.event.post(evt)
except:
pass
return False

def mousemotion(self, widget, event):
x, y, state = event.window.get_pointer()
        rel = (x - self.mouse_pos[0], y - self.mouse_pos[1])
        self.mouse_pos = (int(x), int(y))
        self.button_state = [
            state & gtk.gdk.BUTTON1_MASK and 1 or 0,
            state & gtk.gdk.BUTTON2_MASK and 1 or 0,
            state & gtk.gdk.BUTTON3_MASK and 1 or 0,
        ]
evt = pygame.event.Event(pygame.MOUSEMOTION, pos = self.mouse_pos,
rel = rel, buttons = self.button_state)
try:
pygame.event.post(evt)
except:
pass
return False
Desde hace meses, ninguna captura los eventos de teclado, para que los
capture, hay que grabar los eventos en la clase base de PygameCanvas, de
una de estas dos formas:

self.grab_focus()
self.grab_add()

Pero luego de esto, no podrás "desgrabar" los eventos, de modo que si tu
actividad tiene un menú base en gtk, no puedes volver a él luego de lanzado
el juego. El problema se encuentra en gtk, no es de sugar ni de pygame.




El 22 de mayo de 2012 18:16, Alan Jhonn Aguiar Schwyn
<alanjas en hotmail.com>escribió:

>
> Hola!
>
> En el CodeSprint estuvieron hablando del problema de los eventos de
> SugarGame/OlpcGames.
> Recién me doy cuenta que todas las actividades que usan SugarGame no están
> respondiendo
> a los eventos del teclado!!
> Los únicos eventos que obtengo son del tipo: 4 (MouseMotion)
> Creo que en el único lugar que reconoce los eventos es en la barra de
> actividad.
>
> Qué está pasando? Y desde cuando pasa esto?
>
> Saludos!
>
> Alan
>
>
> _______________________________________________
> Lista olpc-Sur
> olpc-Sur en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-sur
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.laptop.org/pipermail/olpc-sur/attachments/20120522/cfea806e/attachment.html>


More information about the olpc-Sur mailing list