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

Pablo De Napoli pdenapo en gmail.com
Lun Mar 19 00:56:03 ART 2012


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