[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