Tutorial 6 - Creando juegos en android con Andengine - onAreaTouch(), EntityModifiers
Buenas tardes a todos, hoy daremos un paso más en nuestra jornada hacia el tutorial del juego completo. Ayer veiamos cómo las entidades en andengine heredan métodos muy utiles. Pues hoy veremos que otros metodos útiles heredan los sprites, animated sprites, etc. Tambien veremos que son los modifiers y los entitymodifiers, MUY UTILES!!!
Empecemos. Así como el el tutorial pasado aprendimos sobre onManagedUpdate(), sobreescribiendo su comportamiento normal y agregandole otras funcionalidades, en este tutorial veremos onAreaTouch():
Primero agreguemos este sprite como si fuera un boton(aquí hay muchos recursos):

[code language="java"]
//Declaramos una textura
private ITextureRegion texturaBoton
//La añadimos al atlas
texturaBoton = BitmapTextureAtlasTextureRegionFactory.createFromAsset(miAtlas, this, "boton.png", 0, 200);
[/code]
Luego creamos el sprite y sobreescribimos:
[code language="java"]
//Eliminen las lineas :
sceneEjemplo.setOnSceneTouchListener(this);
//No nos olvidemos de crear
//private Sprite Boton;
Boton = new Sprite(100, 50, texturaBoton, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,float pTouchAreaLocalX, float pTouchAreaLocalY) {
Log.d("TOUCH", "si llega aqui");//alguna duda, pregunten
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
sceneEjemplo.registerTouchArea(Boton);
sceneEjemplo.attachChild(Boton);
[/code]
Hasta aquí todo bien no?
Ok, seamos directos, ¿Qué !"#%$& son los modifiers?
Respuesta:
Son distintos tipos de metodos muy bien definidos que podemos usar para modificar el comportamiento de una entidad, pero de una forma continua o controlada a lo largo de un periodo de tiempo, distancia, ancho, alto, etc.
A la acción!
Los modifiers se registran en una entidad y tambien se quitan o se des-registran(o como ustedes lo digan), por ahora registremos uno cada vez que presionemos el boton verde, pero controlando que podamos presionarlo cuando el modifier haya terminado de hacer su trabajo, así:
[code language="java"]
Boton = new Sprite(100, 100, texturaBoton, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,float pTouchAreaLocalX, float pTouchAreaLocalY) {
//boolean de control
if(!botonSuspendido)
//Crearemos nuestro modifier, en este caso un JumpModifier (hay otros, movetoxmodifier, alphamodifier,etc etc etc)
//JumpModofier(tiempo del salto, desdeX, hastaX, desdeY, hastaY, altura del Salto);
charSprite.registerEntityModifier(new JumpModifier(1, charSprite.getX(), charSprite.getX() + 50, charSprite.getY(), charSprite.getY(), -100, new IEntityModifierListener() {
//Cuando el modifier empiecza
@Override
public void onModifierStarted(IModifier pModifier, IEntity pItem) {
botonSuspendido = true;
}
//cuando termina
@Override
public void onModifierFinished(IModifier pModifier, IEntity pItem) {
//este booleano es para no sobre cargar el personaje con muchos modifiers
//y saltar cuando el salto haya finalizado :D
botonSuspendido = false;
}
}));
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
//nunca se olviden de esto
sceneEjemplo.registerTouchArea(Boton);
sceneEjemplo.attachChild(Boton);
[/code]
El resultado es este, y eso que todavia no usamos el motor de física muajajaja :
En el proximo tutorial hablaremos sobre otros modifiers, sobre como combinarlos, sobre como aprovechar sus metodos, etc etc.
Como siempre el codigo completo de la sesión aquí. Diviertanse!
Empecemos. Así como el el tutorial pasado aprendimos sobre onManagedUpdate(), sobreescribiendo su comportamiento normal y agregandole otras funcionalidades, en este tutorial veremos onAreaTouch():
Primero agreguemos este sprite como si fuera un boton(aquí hay muchos recursos):
[code language="java"]
//Declaramos una textura
private ITextureRegion texturaBoton
//La añadimos al atlas
texturaBoton = BitmapTextureAtlasTextureRegionFactory.createFromAsset(miAtlas, this, "boton.png", 0, 200);
[/code]
Luego creamos el sprite y sobreescribimos:
[code language="java"]
//Eliminen las lineas :
sceneEjemplo.setOnSceneTouchListener(this);
//No nos olvidemos de crear
//private Sprite Boton;
Boton = new Sprite(100, 50, texturaBoton, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,float pTouchAreaLocalX, float pTouchAreaLocalY) {
Log.d("TOUCH", "si llega aqui");//alguna duda, pregunten
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
sceneEjemplo.registerTouchArea(Boton);
sceneEjemplo.attachChild(Boton);
[/code]
Hasta aquí todo bien no?
Ok, seamos directos, ¿Qué !"#%$& son los modifiers?
Respuesta:
Son distintos tipos de metodos muy bien definidos que podemos usar para modificar el comportamiento de una entidad, pero de una forma continua o controlada a lo largo de un periodo de tiempo, distancia, ancho, alto, etc.
A la acción!
Los modifiers se registran en una entidad y tambien se quitan o se des-registran(o como ustedes lo digan), por ahora registremos uno cada vez que presionemos el boton verde, pero controlando que podamos presionarlo cuando el modifier haya terminado de hacer su trabajo, así:
[code language="java"]
Boton = new Sprite(100, 100, texturaBoton, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,float pTouchAreaLocalX, float pTouchAreaLocalY) {
//boolean de control
if(!botonSuspendido)
//Crearemos nuestro modifier, en este caso un JumpModifier (hay otros, movetoxmodifier, alphamodifier,etc etc etc)
//JumpModofier(tiempo del salto, desdeX, hastaX, desdeY, hastaY, altura del Salto);
charSprite.registerEntityModifier(new JumpModifier(1, charSprite.getX(), charSprite.getX() + 50, charSprite.getY(), charSprite.getY(), -100, new IEntityModifierListener() {
//Cuando el modifier empiecza
@Override
public void onModifierStarted(IModifier pModifier, IEntity pItem) {
botonSuspendido = true;
}
//cuando termina
@Override
public void onModifierFinished(IModifier pModifier, IEntity pItem) {
//este booleano es para no sobre cargar el personaje con muchos modifiers
//y saltar cuando el salto haya finalizado :D
botonSuspendido = false;
}
}));
return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
//nunca se olviden de esto
sceneEjemplo.registerTouchArea(Boton);
sceneEjemplo.attachChild(Boton);
[/code]
El resultado es este, y eso que todavia no usamos el motor de física muajajaja :
En el proximo tutorial hablaremos sobre otros modifiers, sobre como combinarlos, sobre como aprovechar sus metodos, etc etc.
Como siempre el codigo completo de la sesión aquí. Diviertanse!
Excelentes tus tutoriales José, estoy poniendo mucho esfuerzo en entenderlo y lograr hacer algún juegin al final de estos tutos.
ResponderEliminarGracias.