2009-12-25 6 views
0

Je suis prêt à faire un jeu isométrique mais j'ai du mal avec le mouseListener. Je suis en utilisant Swing et faire des losanges en utilisant des images carrées avec des pixels transparents (format GIF). Le problème est que faire des losanges se toucher signifie avoir les pixels transparents les uns sur les autres, ce qui est un problème avec le mouseListener. Je veux savoir exactement sur quel losange a été cliqué, mais comme les pixels transparents du losange à proximité sont sur le dessus de celui sur lequel on a cliqué, le mauvais losange est sélectionné comme source KeyEvent.mouseListeners et JLabels utilisant des images avec des pixels transparents

Existe-t-il un moyen pour que mouseListener ne considère pas les pixels transparents comme faisant partie de la forme?

Merci d'avoir lu.

+0

Eh bien ... J'ai échoué à sauvegarder mon travail avant de faire une opération dangereuse avec mon ordinateur et tout perdu en raison d'une compression de données échouée (ma sauvegarde était un fichier tar.gz corrompu), donc je ne pourrai pas savoir quelle était la bonne chose à faire. Merci quand même! –

Répondre

2

On ne sait pas

1) pourquoi les tuiles doivent se chevaucher, ou

2) pourquoi vous utilisez JLabels pour les tuiles

Il y a de nombreuses façons de résoudre le problème que vous » Je l'ai, mais je ferais juste un seul composant JComponent qui rend les tuiles nécessaires, et c'est le seul MouseListener.

+0

1) parce que chaque JLabel est considéré comme un carré, mais doit afficher une image losange et les bords de chaque losange sont connectés à une autre image similaire. Eh bien, s'il y a une autre solution, je serais heureux de l'apprendre. 2) Hum ... Probablement parce que je suis nouveau à Java et que JLabels semble être le moyen le plus facile de m'imprimer des images. Chaque carreau peut avoir une image différente, mais ils ont tous la forme d'un losange. Cependant, je dois être capable d'utiliser une sorte d'index z pour ajouter des "objets" dans mon jeu. Pour l'instant, je travaille avec un JLayeredPane(). –

2

Comme mentionné par Jonathan, je pense que vous utilisez la mauvaise technologie pour le travail. J'ai eu beaucoup de succès en utilisant un cadre graphique 2D pour un logiciel comme celui-ci. Dans mon cas, je suis un grand fan de Piccolo. Je sais que vous ne voulez pas entendre cela, mais pensez à recommencer avec le jeu d'outils approprié.

Questions connexes