Aller au contenu

Faire bouger un cercle tout juste dessiné


donutz

Recommended Posts

Bonjour,

J'ai déjà posté ce sujet hier mais... mon compte et ce post ont été supprimé :o

Peut-être du au crash de la base de donnée hier !

Bref !

Je suis nouveau en développement Android, même si je connais déjà Java et je rencontre un petit problème en 2D !

J'arrive à créer des cercles... mais impossible de les modifier une fois dessinés à l'écran :s

En effet la fonction permettant de dessiner renvoi "void"...

Au final j'aimerai faire apparaître aléatoirement (grâce à la fonction random que je n'arrive pas a faire fonctionner dans un autre projet ^^) des rond dessinés et les faire bouger grâce à un thread...

Voici mon code !

Ball.java

package com.tuto.HelloCircle;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class Ball extends View {
private float x;
   private float y;
   private final int r;
   private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
   private Canvas canvas;

 public Ball(Context context, float x, float y, int r) {
    super(context);
    mPaint.setColor(0xFFFF0000);
    this.x = x;
    this.y = y;
    this.r = r;
}

public void update() {
	x++;
}

@Override
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);
	canvas.drawCircle(x, y, r, mPaint);
	this.canvas=canvas;
}

public float getX() {
	return x;
}

public void setX(float x) {
	this.x = x;
}

public float getY() {
	return y;
}

public void setY(float y) {
	this.y = y;
}

public int getR() {
	return r;
}

public void setCanvas(Canvas canvas) {
	this.canvas = canvas;
}

public Canvas getCanvas() {
	return canvas;
}

}

BallThread.java

package com.tuto.HelloCircle;

public class BallThread extends Thread {

private Ball ball;

public BallThread(Ball ball) {
	this.setBall(ball);
}

public void run() {
	while (ball.getX() < 500) {
		ball.update();
		try {
			Thread.sleep(200);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

public void setBall(Ball ball) {
	this.ball = ball;
}

public Ball getBall() {
	return ball;
}
}

HelloCircle.java

package com.tuto.HelloCircle;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;

public class HelloCircle extends Activity {


/** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       FrameLayout main = (FrameLayout) findViewById(R.id.main_view);


       main.setOnTouchListener(new View.OnTouchListener() {
           public boolean onTouch(View v, MotionEvent e) {
           float x = e.getX();
       	float y = e.getY();

       	FrameLayout flView = (FrameLayout) v;
	    Ball ball = new Ball(getParent(), x,y,5);
	    flView.addView(ball);

	    //BallThread ballThread = new BallThread(ball);
	    //ballThread.start();
		return true;
           }
       });
   }
}

A savoir que la j'ai pour ambition de créer un thread pour chaque ball créée mais... je ne pense pas que ce soit la bonne solution...

Qu'en pensez-vous ?

PS : J'ai également suivi ce tutoriel : http://www.droidnova.com/playing-with-graphics-in-android-part-vi,209.html

J'ai réussi à faire ce qui je vous demande dans ce tutoriel à la seule différence que ce sont des images existantes qui sont utilisées...

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Plutôt que de dessiner tes formes à la main, tu pourrais regarder du côté de ShapeDrawable et des Shape, qui permettent de définir des objets graphiques (relativement) simples, et de les passer au moteur graphique qui se charge ensuite de les dessiner. Si tu veux interagir dessus, il te suffit de modifier les attributs nécessaires (position, taille), Android se chargeant de redessiner les objets

Pour ce qui est de la gestion du mouvement, bien implémenté, un seul thread doit largement suffire pour déplacer les objets

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...