Ejecutar dos animaciones al mismo tiempo en CocosSharp
Introducción
En otro post les contaré como ejecutar una animación inmediatamente después de otra (desencadenadas).
Para esto voy a asumir que el lector tiene conocimientos básicos de Cocos2d o CocosSharp.
Si no es así, podés preguntar lo que necesites saber en los comentarios, o ser paciente ya que con el tiempo, voy a ir lanzando posts dedicados a la programación en CocosSharp con Visual Studio.
Si bien CocosSharp es un excelente port de Cocos2D para programar en .NET, las documentación no es muy completa, o no se mantiene actualizada al 100%.
Por eso, siempre que necesitamos saber algo, podemos referirnos a la documentación de Cocos2D, ya que CocosSharp es solo un PORT de esta librería, y maneja casi todos los mismos conceptos, métodos, clases, etc.
URL a la documentación e Cocos2D: http://www.cocos2d-x.org/reference/native-cpp/V2.2/index.html
URL a la documentación de CocosSharp: (no muy completa): https://developer.xamarin.com/api/namespace/CocosSharp/
Manos a la obra
Suficiente charla, vamos a ponernos a trabajar.
En Cocos2D existe una clase llamada CCSpawn que nos permite asignarle una lista de acciones.
CCSpawn también es una acción, ya que hereda de CCAction.
CCSpawn también es una acción, ya que hereda de CCAction.
CCSpawn es la clase que nos va a permitir ejecutar varias animaciones o acciones a la misma vez.
IMPORTANTE: este código sirve a modo de ejemplo. El uso del mismo debe ser aplicado de la manera adecuada al código del usuario, y no específicamente de la misma manera que es utilizado aquí.
Después de hacerme el serio, pasamos a ver el código:
Paso 1: Crear el objeto
Lo primero que tenemos que hacer es tener un objeto (que herede de CCNode) al cual vamos a aplicar las animaciones.
En mi caso, voy a crear un label y lo voy a hacer en el override del método AddedToScene:
En mi caso, voy a crear un label y lo voy a hacer en el override del método AddedToScene:
protected override void AddedToScene() { base.AddedToScene(); // Use the bounds to layout the positioning of our drawable assets var bounds = VisibleBoundsWorldspace; CCLabel label = new CCLabel("Tocame para ejecutar Muchas Acciones a la vez!", "fonts/MarkerFelt", 22, CCLabelFormat.SpriteFont); // position the label on the center of the screen label.Position = bounds.Center; // Register for touch events var touchListener = new CCEventListenerTouchAllAtOnce(); touchListener.OnTouchesEnded = OnTouchesEnded; AddEventListener(touchListener, this); }
Paso 2: Crear animaciones
El siguiente paso, es crear las animaciones que deseamos aplicarle.En mi caso voy a aplicarle una animación CCScaleBy para agrandar el objeto, y CCRotateBy para rotarlo:
// Animacion que hace crecer mi nodo por el tiempo definido, a un Scale de 3 veces su tamaño original. CCScaleBy escalar = new CCScaleBy(duracion, 3); // Animacion que hace rotar mi nodo por el tiempo definido, a un angulo de 360 grados. CCRotateBy rotacion = new CCRotateBy(duracion, 360);
Paso 3: Unirlas con CCSpawn
Una vez que tenemos las animaciones creadas, las unimos creando el objecto CCSpawn, utilizando las animaciones que creamos, como parametros del constructor:
// Creo el objeto CCSpawn, pasandole las animaciones que quiero ejecutar. CocosSharp.CCSpawn spawn = new CocosSharp.CCSpawn(escalar, rotacion);
Paso 4: Ejecutar la acción spawn
Lo último que nos queda por hacer, es ejecutar la animación en el objeto en el cual queremos que corra. En nuestro caso, es en el label:
//Ejecuto las animaciones en el label.
label.RunAction(spawn);
Last, but not least:
Eso es todo, ahora si ejecutamos el código, vamos a ver que podemos correr las animaciones al mismo tiempo. Lo importante a tener en cuenta, es que en este ejemplo, solo se agregan dos animaciones o acciones, pero CCSpawn nos permite agregar cuantos objetos que hereden de CCAction querramos. Es decir que podemos utilizar mucho mas que animaciones (CCCallFunc, otros CCSpawn, CCSequence, etc) y asi crear una cadena de animaciones infinita y sin límites.
Quiero ver el código completo!
Acá está!. A continuación les dejo el link a GitHub en donde van a poder descargar todo el código completo:
Saludos!
HarkDev/HarkDev.CocosSharp.CCSpawn
HarkDev.CocosSharp.CCSpawn - http://harkdev.blogspot.com/2017/06/ejecutar-dos-animaciones-al-mismo.html
Dudas?, Comentarios?, Agradecimientos?, Halagos?
Lo que sea que quieras decir acerca de este post, podés hacerlo en los comentarios de acá abajo y te voy a responder personalmente!
Comentarios
Publicar un comentario