viernes, 24 de abril de 2015

Obteniendo datos de otro Activity en Android

Para este ejemplo sera necesario usar la misma estructura que manejamos en este tutorial

ir al tutorial

Una vez que completamos los intents y nos movemos por ventanas ahora necesitaremos recuperar los datos que se encuentran en un Activity y poderlo mostrar en otro activity para ello realizaremos cambios en algunos de los archivos que utilizamos en el anterior tutorial para poder realizarlo con exito.

1.- Primero modificaremos el segundomain.xml para agregarle un texto y podramos capturarlo y depues mostrarlo en otro Activity.

segundomain.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Esta es la segunda activity"
        />

    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Introduce tu poderoso nombre:"
            />

    <EditText
            android:id="@+id/nombre"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />

    <Button
            android:id="@+id/btn_OK"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Aceptar"
            android:onClick="onClick"
            />

</LinearLayout>



2.- Lo siguiente sera modificar el Activity2.java para poder agregarle la nueva funcionalidad que necesitara para pasar los datos.

Activity2.java

package kenny.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//librerias para este ejemplo
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.EditText;


public class Activity2 extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Agregamos el archivo xml de la segundomain
        setContentView( R.layout.segundomain );
    }

    //Creo mi evento onClick
    public void onClick(View v )
    {
        Intent data = new Intent();

        //Obtengo el valor del editText
        EditText nombre = (EditText) findViewById(R.id.nombre);

        //Establesco los datos para poderlos pasar.
        data.setData(Uri.parse(nombre.getText().toString()));

        setResult(RESULT_OK, data);

        //Cierro la activity
        finish();
    }

}

3.- Finalmente modificaremos el MyActivity.java para mostrar los datos introducidos y recuperados del anterior activity que es Activity2 y mostrar el resultado.

MyActivity.java

package kenny.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//librerias a utilizar
import android.content.Intent;
import android.view.View;
import android.widget.Toast;

public class MyActivity extends Activity {

    //una bandera que nos servira para verificar que estamos mandando bien el uri
    int request_code = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    //Creamos nuestros evento onClick
    public void onClick( View v )
    {
        //le pasaremos el intent y codigo de respuesta
        startActivityForResult(new Intent("kenny.master.Activity2"), request_code);
    }

    //Si la peticion que pedimos fue correcta, entonces mostrara el dato de la anterior activy
    //y la mostrara en esta activy
    public void onActivityResult( int requestCode, int resultCode, Intent data)
    {
        if( requestCode == request_code )
        {
            if(resultCode == RESULT_OK )
            {
                Toast.makeText(this, data.getData().toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }
}







Manejando multiples eventos en SFML


#include <SFML\Graphics.hpp>

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(640 , 480), "Manejando Multiples Eventos");
 window.setFramerateLimit(60);

 //GameLoop
 while (window.isOpen())
 {
  window.clear();
  
  //Eventos
  sf::Event event;

  while (window.pollEvent(event))
  {
   //Creo una sentencia switch para controlar muchos eventos
   switch (event.type)
   {

   //Cierra la ventana
   case sf :: Event::EventType::Closed:
    window.close();
    break;

   //Cuando presiones y mantienes la barra espaciadora cambiara de titulo de la ventana
   case sf :: Event::EventType::KeyPressed:
    if (event.key.code == sf::Keyboard::Space)
    {
     window.setTitle("Presionaste la barra espaciadora");
    }

    break;

   //Cuando sueltes la barra espaciadora cambiara de texto nuevamente
   case sf::Event::EventType::KeyReleased:
    if (event.key.code == sf::Keyboard::Space)
    {
     window.setTitle("Soltaste la barra espaciadora");
    }

    //Si presionas y sueltas Escape se cerrara la ventana
    else if (event.key.code == sf::Keyboard::Escape)
    {
     window.close();
    }

    break;

   default:
    break;
   }
  }

  window.display();
 }

 return 0;
}






miércoles, 22 de abril de 2015

Animacion de Sprites Esqueleticos en Spriter - Creando Armature

En este tutorial empezaremos a crear el armature para nuestro personaje, usaremos la siguiente metodología para poder crear nuestro armature con éxito, bien usaremos el emparentamiento, que es establecer una jerarquía padre - hijo, un ejemplo de esto seria que tenemos dos objetos al primer objeto sera el objeto padre y el otro objeto el hijo, si nosotros moviéramos de lugar al hijo se movería esta pieza, pero si movemos el padre se moverá junto con el hijo, así que usaremos estos términos, también iremos asignando a cada hueso la pieza del sprite correspondiente para poder manipular su movimiento con el hueso, el proceso sera el siguiente serán 3 huesos en cada pierna, 3 huesos para el brazo derecho, 2 huesos para el brazo izquierdo 1 hueso para el cuerpo, 1 hueso para la capa, 1 hueso para la cabeza.

NOTA: Cuando creamos el armature por lo regular se establece en ocasiones un emparentamiento de huesos, complicando el proceso de animación del personaje, siempre verificar que no estén unidos los huesos con otros huesos, te darás cuenta porque hay una lineas rojas, moradas y grises que atraviesan de un lado a otro estas lineas no se deben atravesar si lo vez así es que te toparas con este detalle aquí te pongo un ejemplo de ello y otro ejemplo de lo que puede ocurrirte si no te percatas de ello, arruinando completamente tu creación en la animación ya que te moverá los sprites y tu armature en ambas direcciones que no deseas.