Salve a tutti, sto sviluppando un piccolo giochino stile Candy Crush per intenderci. Ho la mia matrice grafica, disegnata tramite funzione drawImage (ogni elemento della matrice è di tipo Image) e riesco a simulare i vari movimenti. Il problema mi è sorto nel momento in cui h deciso di far vedere a video il "trascinamento" dell'elemento da una cella ad un'altra. Dalla funzione mousePressed memorizzo le coordinate dell'elemento che sarà trascinato e tramite le variabili recuperate dalla mouseDragged dovrei seguire lo spostamento effettuando un continuo paint dell'elemento fin quando non rilascio( correggetemi se la sto pensando male ). Questo è il codice della mia paint:
codice:
@Override
public void paint(Graphics g) {
super.paint(g);
if(drawBackground){ // questa variabile booleana si attiverà non appena effettuerò la pressione del mouse su un elemento
Element c = GamePanel.this.gameManager.setOfElement.get(new String(""+pressX+""+pressY));
//Memorizzo le coordinate dell'elemento sul quale effettuo la pressione del mouse
if(c.getColour().equals("R")){
// se di colore rosso disegna l'elemento nelle coordinate (lastY, lastX) le quali rappresentano le variabile di drag
g.drawImage(imageProvider.getRedElementBackground(), lastY, lastX, this);
}
else if(c.getColour().equals("P")){
g.drawImage(imageProvider.getPinkElementBackground(), lastY, lastX, this);
}
else if(c.getColour().equals("G")){
g.drawImage(imageProvider.getGreenElementBackground(), lastY, lastX, this);
}
else if(c.getColour().equals("B")){
g.drawImage(imageProvider.getBrownElementBackground(), lastY, lastX, this);
}
else if(c.getColour().equals("Y")){
g.drawImage(imageProvider.getYellowElementBackground(), lastY, lastX, this);
}
}
}
Il risultato ottenuto in esecuzione è un piccolo movimento dell'elemento. Tra l'altro neanche nella posizione in cui esso è, ma viene disegnato in posizione (0,0) della matrice, nonostante magari voglio spostare l'elemento in posizione (5,6), per esempio.
Dove sto sbagliando?