[pyar] consulta sobre cocos2d : como refescar una escena en medio de un callback?

Pablo De Napoli pdenapo en gmail.com
Lun Mar 19 01:09:42 ART 2012


Obs: el programa que mandé a la lista tiene un error
(hay dos versiones de on_option) pero no afecta es la segunda la que ejecuta!
mil disculpas!
Pablo

2012/3/19 Pablo De Napoli <pdenapo en gmail.com>:
> Hola,
>
> Mando esta consulta a la lista porque sé que hay varios de los autores
> de Cocos2d en ella
> (de hecho, por lo que sé el proyecto surgió de un Pycamp de PyAr!)
> Resulta que estoy ayudando a un amigo a programar un jueguito con
> Cocos2d (en realidad
> él lo está programando para la versión para Iphone, pero el problema
> que tenemos se ve en la versión para python.)
>
> Fijensé el código que copio a continuación: es un menú en el cual
> quiero que cuando se
> ejecute la función callback llamada on_option pretendo que primero se
> vuelva invisible
> esa opción del menú y después de una pausa (de 4 segundos) vuelva a ser visible.
>
> El problema es que Cocos2d no parece registrar el cambio en la escena
> (y redibujarla) hasta
> que termina la función on_option.
> Hay alguna manera de decirle que quiero que refresque la escena
> después de que le dije que la
> etiqueta se vuelva invisible? (para que el efecto se vea!)
>
> muchas gracias por cualquier ayuda que puedan darme!
> saludos
> Pablo
>
> #
> # Basado en la demo de Cocos
> # http://code.google.com/p/los-cocos/
> #
>
> import sys
> import os
> import time
> sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
>
> from pyglet import image
> from pyglet.gl import *
> from pyglet import font
>
> from cocos.director import *
> from cocos.menu import *
> from cocos.scene import *
> from cocos.layer import *
> from cocos.actions import *
>
> class MainMenu(Menu):
>
>
>    def on_quit( self ):
>        pyglet.app.exit()
>
>    def on_option(self,que_opcion):
>       print "opcion "+str(que_opcion)+" seleccionada \n"
>       self.items[que_opcion-1]=False
>
>    def __init__( self ):
>        super( MainMenu, self ).__init__("TITLE" )
>
>        self.menu_valign = CENTER
>        self.menu_halign = CENTER
>
>        # then add the items
>        items = [
>            ( MenuItem('Opcion 1', self.on_option,1) ),
>            ( MenuItem('Opcion 2', self.on_option,2 ) ),
>            ( MenuItem('Opcion 3', self.on_option,3 ) ),
>            ( MenuItem('Opcion 4', self.on_option,4 ) ),
>            ( MenuItem('Opcion 5', self.on_option,5 ) ),
>            ( MenuItem('Opcion 6', self.on_option,6 ) ),
>            ( MenuItem('Salir', self.on_quit ) ),
>                ]
>
>        self.create_menu( items, shake(), shake_back() )
>
>    def on_quit( self ):
>        pyglet.app.exit()
>
>    def on_option(self,que_opcion):
>       print "opcion "+str(que_opcion)+" seleccionada \n"
>       lista_items=self.get_children()
>       # Las opciones estan numeradas desde 1 pero los indices de un array
>       # en python comienzan en 0
>       lista_items[que_opcion-1].visible=False
>       self.draw()
>       time.sleep(4)
>       lista_items[que_opcion-1].visible=True
>
>
> if __name__ == "__main__":
>
>    pyglet.font.add_directory('.')
>
>    director.init( resizable=True)
>    director.run( Scene( MainMenu() ) )



More information about the pyar mailing list