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

GWT et Vaadin Java Discussion :

Deplacement et animation d'un personnage


Sujet :

GWT et Vaadin Java

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut Deplacement et animation d'un personnage
    J'essaye de réaliser un déplacement d'un personnage dans une grille. donc j'ai réalisé un code qui translate l'image et qui la change en même temps pour lui donner un effet de mouvement.

    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
    public void animatMove(final int idjoueur, final int idperso, final List<Position> positions)
    	{
    	   nbdeplacement=0;
    	   	    int cheminX=(convertTileInCoordX(positions.get(0).getPoint().getX(),positions.get(0).getPoint().getY())+widthTuile/2-personnagesCanvas.get(idperso).getPersoView().getWidth()/2+5)-personnagesCanvas.get(idperso).getAbsoluteLeft();
    	   	    int cheminY=(convertTileInCoordY(positions.get(0).getPoint().getX(),positions.get(0).getPoint().getY())-30)-personnagesCanvas.get(idperso).getAbsoluteTop();
    			  //convertTileInCoordX(0,10)+widthTuile/2-persoView.getWidth()/2+5,convertTileInCoordY(0,10)-30
     
    	   	    final int nbposition=8;
    	   	    final int stepX=cheminX/nbposition;
    	   	    final int stepY=cheminY/nbposition;
     
    			timer=new Timer(){
              public void run() {
            	  Position postmp=positions.get(0);
            	  if(nbdeplacement<nbposition)
            	  {
            		  personnagesCanvas.get(idperso).getPersoView().setUrl("../images/personnages/"+joueurs.get(idjoueur).getEquipe().getPersonnages().get(idperso).getNameClasse()+"/"+joueurs.get(idjoueur).getEquipe().getPersonnages().get(idperso).getNameClasse()+"_marche_"+postmp.getOrientation()+"_"+((nbdeplacement%joueurs.get(idjoueur).getEquipe().getPersonnages().get(idperso).getNbImageMarche())+1)+".png");
            		  personnagesCanvas.get(idperso).setZindex(Integer.toString(5000+postmp.getPoint().getX()+20*postmp.getPoint().getY()+1));
            		  mainPanel.setWidgetPosition(personnagesCanvas.get(idperso),personnagesCanvas.get(idperso).getAbsoluteLeft()+stepX,personnagesCanvas.get(idperso).getAbsoluteTop()+stepY);
            		  nbdeplacement++;
            	  }
            	  else
            	  {
            		  timer.cancel();
            		  timer=null;
            		  positions.remove(0);
            		  if(positions.isEmpty())
            		  {
            			  personnagesCanvas.get(idperso).getPersoView().setUrl("../images/personnages/"+joueurs.get(idjoueur).getEquipe().getPersonnages().get(idperso).getNameClasse()+"/"+joueurs.get(idjoueur).getEquipe().getPersonnages().get(idperso).getNameClasse()+"_"+postmp.getOrientation()+"_0.png");
            			  if(view.getContactList().getMe().getPseudo().equals(joueurs.get(currentPlayer).getPseudo()))
            			  {
            					mapView.addMouseListener(listenerMouseMove);
            					selectionneur.addMouseListener(listenerMouseMove);
            			  }
            		  }
            		  else
            			  animatMove(idjoueur, idperso, positions);
            	  }
              }
     
            };
     
            timer.scheduleRepeating(50);
    	}
    Donc plusieurs souci apparaissent. D'abord il est impossible d'effectuer un autre déplacement pendant que le 1er n'est pas finit. Et aussi on s'aperçoit que des fois l'affichage le l'image ne change pas, peut être du à un temps de chargement des images
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Tu as combien d'images ?

    Je suppose que tu en as plusieurs petites ...

    Tu utilises ImageBundle (ClientBundle dans la v2.0) ?
    Cela te permet de toutes les récupérer en une seule fois.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Points : 230
    Points
    230
    Par défaut
    J'en ai 8 différente mais par la suite je pourrais en avoir 10-20 non je n'utilisais pas imageBundle. Peut-être ça résoudra ce souci. Et pour faire un effet de translation (sans passer par une GWT-EXT...) tu aurais utiliser la même technique que moi? utiliser un timer et décaler l'image à une même fréquence?
    [Android] Shopy liste de course (Java)

    votre fidèl serviteur


  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Probablement ...
    Le problème, c'est que javascript n'est pas multithread

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

Discussions similaires

  1. Animation d'un personnage
    Par greg08 dans le forum Général Java
    Réponses: 1
    Dernier message: 06/11/2009, 10h45
  2. Question sur l'animation de personnages 3D
    Par cuchu dans le forum Moteurs 3D
    Réponses: 4
    Dernier message: 21/09/2007, 12h39
  3. Animation de personnages
    Par NiamorH dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 09/09/2007, 19h29
  4. Problème avec les animations de mon personnage
    Par Stnaire dans le forum SDL
    Réponses: 1
    Dernier message: 27/11/2006, 20h59
  5. Animer des personnages 3D
    Par mat.M dans le forum DirectX
    Réponses: 6
    Dernier message: 16/06/2004, 11h28

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