Als beginnende java-programmeur ben ik aan het proberen om het spel "Khet" te programmeren (voor meer info erover verwijs ik naar Google).
Het is een bordspel voor 2 personen met 2 lasers. Na de beurt van 1 persoon wordt er een laser afgevuurd, dit wordt gevisualiseerd in mijn spel. De vakjes van mijn bord zijn JPanels met daarin 2 JLabels in een Overlay-layout. De laserstraal wordt geladen uit een gif-bestandje (die doorzichtig is buiten de laser) en dus boven mijn afbeelding geplaatst. Tot zover gaat het allemaal goed.
Om mijn spelbord te vernieuwen (mijn verplaatste stukken uit arrays zichtbaar te maken en eventuele resterende overlays te verwijderen) heb ik een functie update(). Deze werkt naar behoren voorzover ik kan zien, deze wordt ook aangeroepen vlak voor ik mijn laserstralen begin te tekenen. Maar nadat de laserstraal dus getekend is roep ik een timer op die een paar seconden later die functie nogmaals oproept, om het bord weer normaal zichtbaar te maken, zonder stralen, en als er een stuk geraakt is door de laserstraal moet deze ook verdwijnen, dat moet ook gebeuren door deze update().
Het probleem: heel mijn bordlayout is om zeep na die update() met vertraging, afbeeldingen worden maar half getekend of soms verkeerd geresized. Ik vroeg me af of het aan de functie lag of aan iets anders, en ik heb vervolgens een knop gemaakt om handmatig up te daten, als ik dat doe wordt de layout weer in orde.
Ik geraak er niet aan uit wat het probleem kan zijn. Hieronder nog eventjes de functie die met vertraging werkt, want daar zou het probleem moeten gecreëerd zijn voorzover ik kan zien.
mijn vraag: herkent iemand mijn probleem of weet iemand wat ik er aan kan doen?
Het is een bordspel voor 2 personen met 2 lasers. Na de beurt van 1 persoon wordt er een laser afgevuurd, dit wordt gevisualiseerd in mijn spel. De vakjes van mijn bord zijn JPanels met daarin 2 JLabels in een Overlay-layout. De laserstraal wordt geladen uit een gif-bestandje (die doorzichtig is buiten de laser) en dus boven mijn afbeelding geplaatst. Tot zover gaat het allemaal goed.
Om mijn spelbord te vernieuwen (mijn verplaatste stukken uit arrays zichtbaar te maken en eventuele resterende overlays te verwijderen) heb ik een functie update(). Deze werkt naar behoren voorzover ik kan zien, deze wordt ook aangeroepen vlak voor ik mijn laserstralen begin te tekenen. Maar nadat de laserstraal dus getekend is roep ik een timer op die een paar seconden later die functie nogmaals oproept, om het bord weer normaal zichtbaar te maken, zonder stralen, en als er een stuk geraakt is door de laserstraal moet deze ook verdwijnen, dat moet ook gebeuren door deze update().
Het probleem: heel mijn bordlayout is om zeep na die update() met vertraging, afbeeldingen worden maar half getekend of soms verkeerd geresized. Ik vroeg me af of het aan de functie lag of aan iets anders, en ik heb vervolgens een knop gemaakt om handmatig up te daten, als ik dat doe wordt de layout weer in orde.
Ik geraak er niet aan uit wat het probleem kan zijn. Hieronder nog eventjes de functie die met vertraging werkt, want daar zou het probleem moeten gecreëerd zijn voorzover ik kan zien.
Java:
1
2
3
4
5
6
7
8
9
10
11
| public void tekenBord() { TimerTask taak=new java.util.TimerTask(){ @Override public void run() { update(); } }; timer.schedule(taak, 1000); } |
mijn vraag: herkent iemand mijn probleem of weet iemand wat ik er aan kan doen?