IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Canvas & OnTouchEvent


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 71
    Points
    71
    Par défaut Canvas & OnTouchEvent
    Salut à tous !

    Je suis nouveau dans le monde d'androïd, et dans le cadre d'un projet pour ma licence, Je doit développer un petit jeu pour smartphone et tablette.
    Le sujet est imposé. Il s'agit de réaliser un jeu de puzzle. En gros il faut reconstituer une image qui à été préalablement découper en plusieurs morceaux.
    Rien de plus.

    Je vous demande pas de me donner de réponse toute faite hein , mais j'aurais juste besoin d'aide pour la gestion du toucher sur l'écran. (les évènement quoi !)
    Niveau algorithmique, c'est plutôt simple, même très mais android , un véritable casse tête !!

    Pour commencer, j'ai décidé de créer une classe Piece qui étend Drawable (pour la méthode draw) et qui implémentes View.OnTouchListener.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    package info.ups.fr.puzzlegame_template;
     
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.ColorFilter;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
     
    /**
     * Created by leocances on 24/03/15.
     */
    public class Piece extends Drawable implements View.OnTouchListener{
        private static final String TAG_LOG = "TouchActivity";
        private static final boolean LOG = true;
        private int id, idG;
        private int x, y;
        private Bitmap image;
     
        public Piece(int id, int x, int y, Bitmap image) {
            this.id     = id;
            this.x      = x;
            this.y      = y;
            this.image  = image;
        }
     
        public Piece(int id, int idG, Bitmap image) {
            this.id     = id;
            this.idG    = idG;
            this.image  = image;
        }
     
        public int getX() { return this.x;}
        public int getY() { return this.y;}
        public int getId() { return this.id;}
        public int getIdG() {return this.idG;}
        public Bitmap getImage() {return this.image;}
     
        @Override
        public void draw(Canvas canvas) {
            canvas.drawBitmap(image, x, y, null);
        }
     
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int action = event.getAction();
     
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    x += 10;
                    v.invalidate();
                    log("x : " + x + "\ty : " + y);
                    break;
                case MotionEvent.ACTION_MOVE:
                    break;
                case MotionEvent.ACTION_UP:
                    break;
            }
     
            return true;
        }
     
        @Override
        public void setAlpha(int alpha) {}
     
        @Override
        public void setColorFilter(ColorFilter cf) {}
     
        @Override
        public int getOpacity() {return 0;}
     
        private String stringValue(MotionEvent event) {
     
            final int action = event.getAction();
     
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    return "ACTION_DOWN";
                case MotionEvent.ACTION_MOVE:
                    return "ACTION_MOVE";
                case MotionEvent.ACTION_UP:
                    return "ACTION_UP";
                case MotionEvent.ACTION_CANCEL:
                    return "ACTION_CANCEL";
            }
     
            return "";
        }
     
        private static void log(String message){
            if (LOG) {
                Log.d(TAG_LOG, message);
            }
        }
    }
    L'idée été qu'il aurait suffit de modifier les valeurs des deux attributs x et y pour déplacer l'image dans le canvas.
    Cependant même après avoir déclarer mes SetOnTouchListener(piece) dans ma vue, les évènement ne sont pas gérer.

    Pouvez-vous m'expliquer comment déclarer correctement mes évenements pour effectuer des action lord d'event sur l'écran ?

  2. #2
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Salut,
    J'ai pas vérifié, mais je dirais que ta classe à besoin d'étendre de View et non de Drawable pour que les événements soit prit en compte dessus.

  3. #3
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,
    J'ai pas vérifié, mais je dirais que ta classe à besoin d'étendre de View et non de Drawable pour que les événements soit prit en compte dessus.

Discussions similaires

  1. Timage et Canvas??
    Par vanack dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2007, 12h38
  2. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 14h24
  3. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 14h02
  4. Réponses: 2
    Dernier message: 17/05/2002, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo