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.
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
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); }
Partager