Estoy creando un juego para Android que necesita mostrar algunas imágenes diferentes. Necesito crear un método que siga generando imágenes a partir de un recurso en el directorio dibujable y luego soltar las imágenes desde la parte superior de la pantalla hacia la parte inferior. También necesito que cada imagen tenga una identificación "imagen-1" "imagen-2" en la que el número de índice aumenta una vez que se crean más imágenes como un número entero. También necesito que se generen en diferentes ubicaciones en la parte superior de la pantalla y que caigan con una velocidad específica. Una vez que lleguen al fondo, quiero que se ejecute un método como:

public void touchedGround() {
//My code
}

Estoy usando este código hasta ahora:

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

public class GameScreenActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gamescreen);
    generateParachuters(savedInstanceState);
}

private void generateParachuters(Bundle icicle) {
    // TODO Auto-generated method stub
    Toast.makeText(getApplicationContext(), "generating images", 10).show();
}
}
0
user1183066 7 mar. 2012 a las 19:27

1 respuesta

La mejor respuesta

Conozco una forma de hacerlo, pero requiere mucho más código del que probablemente estés buscando. Pero bueno, aquí va.

  1. Crea una clase para tu objeto que cae, que supongo que es un Parachuter. Esta clase tendrá una variable X e Y para realizar un seguimiento de dónde se encuentra en la pantalla. Luego puede tener un método tick, que aumentará la variable Y por la rapidez con la que desee que caiga. También puede hacer que realicen un seguimiento de un ID de número entero si lo desea.

  2. Cree una lista que contendrá los objetos Parachuter. Yo uso un ArrayList. De esta manera, crea un Parachuter cuando sea necesario y lo agrega a la lista. Recorra la lista para dibujar cada uno.

  3. Necesitas algo para dibujar los Parachuter s. Personalmente, uso Canvas de SurfaceView.

  4. Necesitará una animación en bucle. Recorra cada vez que dibuje las Parachuter sy llame a tick en cada una.

  5. Durante el bucle, puede comprobar la posición de cada Parachuter. Si su posición va más allá de Canvas.getHeight(), elimine la imagen de la lista.

Bueno, eso es bastante. Pregúntame si necesitas más aclaraciones.

ACTUALIZACIÓN : Aquí hay un ejemplo completamente funcional.

ACTUALIZACIÓN 2 :

//Check right edge of screen
for (int i = 0; i < parachuters.size(); i++)
{
    if (parachuters.get(i).getX() > canvas.getWidth())
        //Do whatever it is you want
}
0
Jesse Jashinsky 22 mar. 2012 a las 01:15
 – 
Jesse Jashinsky
11 mar. 2012 a las 03:44
Intenté usar el código de muestra y los proyectos, pero sin suerte. No saqué nada de eso. ¿Podrías publicarme algún código de cómo lo harías ??? He creado una clase personalizada en la que llamo "Parachuter.java" y esa es mi "ImageView" personalizada, más o menos.
 – 
user1183066
11 mar. 2012 a las 20:12
Muchas gracias, lo hice funcionar, pero necesito hacer que un determinado método se repita cada segundo, ¿cómo puedo hacer esto? Porque lo necesito para dibujar las imágenes en diferentes lugares en la parte superior de la pantalla y luego caer, y generar paracaídas cada segundo, ¿cómo es esto posible?
 – 
user1183066
17 mar. 2012 a las 21:39
¿Cómo puedo comprobar cuando hay un paracaidista en el borde de la pantalla y luego ejecutar algún código?
 – 
user1183066
17 mar. 2012 a las 22:02
Simplemente escriba un método que verifique la ubicación del paracaidista y verifique si está en el borde. El código debajo del comentario Eliminar es cómo puede verificar si está en el borde inferior.
 – 
Jesse Jashinsky
18 mar. 2012 a las 02:47