donutz Posté(e) 7 janvier 2011 Share Posté(e) 7 janvier 2011 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 More sharing options...
chpil Posté(e) 10 janvier 2011 Share Posté(e) 10 janvier 2011 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 More sharing options...
jokamax Posté(e) 11 janvier 2011 Share Posté(e) 11 janvier 2011 Bonjour, Personnellement je vois trois possibilités : Tu peux regarder du coté des interpolators ici : Un exemple Ou de l'openGl avec l'andEngine : Un tuto sympa Enfin il y a ca : là En espérant que ca t'aide Jok Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.