2012-12-07 3 views
0

pourquoi cela ne fonctionne-t-il pas? il imprime les emplacements comme le devrait, mais il ne déplace pas l'image sur l'écran? J'utilise un émulateur. Je pense que l'image devrait être en mouvement mais elle reste au même endroit même si les valeurs x et y changent. Je pense que le problème peut être la toile que j'utilise quand j'appelle surDraw (toile). que puis-je faire pour que cette toile fonctionne (si la toile est le problème)?onDraw (Canvas canvas) dans un fil en utilisant l'API Android

si ce n'est pas assez de détails s'il vous plaît dites-moi. code ci-dessous;

GameView.java 

    package com.example.game; 

    import android.content.Context; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.graphics.Canvas; 
    import android.graphics.Color; 
    import android.view.View; 

    public class GameView extends View implements Runnable{ 
Thread gameLoop = new Thread(this); 
boolean running = false; 
int x = 10; 
int y = 10; 
Canvas canvas = new Canvas(); 


private Bitmap bmp; 
public GameView(Context context) { 
    super(context); 
    bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
} 

    @Override 
public void onDraw(Canvas canvas) { 
    canvas.drawColor(Color.BLACK); 
    canvas.drawBitmap(bmp, x, y, null); 
    System.out.println(x); 
    if(x < 100) { 
     x+=10; 
    } 

    if(x >= 99 && y < 400) { 
     y+=10; 
    } 

    if(y > 350 && x >= 99) { 
     x = 10; 
     y = 10; 
    } 
    } 

public void start() { 
    if(!running) { 
     running = true; 
     gameLoop.start(); 
    } 
} 

public void stop() { 
    if(running) { 
     running = false; 
    } 
} 


    @Override 
public void run() { 
while(running) { 
    try{ 
    onDraw(canvas); 
    Thread.sleep(1000); 
    }catch(Exception exc) {System.err.println("error sleep interup");} 
} 

} 

    } 



    Main.java 

    package com.example.game; 

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

    public class Main extends Activity { 

GameView gv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    gv = new GameView(this); 
    setContentView(gv); 

    gv.start(); 
}  

}

Répondre

0

Vous devez mettre l'objet en arrière sur la toile après avoir calculé les coordonnées x et y.

public void onDraw(Canvas canvas) { 
    canvas.drawColor(Color.BLACK); 
    System.out.println(x); 
    if(x < 100) { 
     x+=10; 
    } 

    if(x >= 99 && y < 400) { 
     y+=10; 
    } 

    if(y > 350 && x >= 99) { 
     x = 10; 
     y = 10; 
    } 
    canvas.drawBitmap(bmp, x, y, null); 
    } 
+0

l'image ne bouge toujours pas? des idées? – user1776707