[pyar] consulta sobre cocos2d : como refescar una escena en medio de un callback?
claudio canepa
ccanepacc en gmail.com
Lun Mar 19 08:08:57 ART 2012
On Mon, Mar 19, 2012 at 12:56 AM, Pablo De Napoli <pdenapo en gmail.com> wrote:
> Hola,
>
>
[snip]
>
> 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.
>
>
>
> 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
>
>
>
Detalles de porque no se ven cambios en pantalla, el post anterior no lo
deje claro:
el codigo setea .visible a False, que tiene sentido
Luego llama directamente a draw, lo que produce una serie de llamadas
openGL que dibujan no sobre la memoria de video que el hardware de video
muestra en pantalla (frontbuffer) sino en algo llamado un backbuffer de
openGL.
Para que el resultado se vea en pantalla habria que decirle a openGL que
intercambie estos dos buffers (flip)
Esa llamada no esta (y seria un error que estuviese, no es responsabilidad
del nodo), asi que nada podria mostrarse.
Despues espera cuatro segundos, pone visible a True y termina on_option.
La siguiente vez que el evento on_draw se dispare, la escena se dibuja pero
el nodo ya esta marcado como visible
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120319/2cf92c00/attachment.html>
More information about the pyar
mailing list