Toon posts:

java applet bewegingen met pijltjestoetsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

Anoniem: 398026

Topicstarter
Dag tweakers

Ik ben bezig met een spelletje te maken in java.
Dit begint aardig te lukken maar de bewegingen lukken alleen met buttons.
Ik had eerst een kleine test gemaakt: een balletje met de pijltjestoetsen doen bewegen en dat lukte.

Maar die code wil niet lukken in mijn spel. Zelfs de System.outs doen het ook niet.


Ziehier de code van het toetsenbord
Java:
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
    public void keyPressed(KeyEvent arg0) 
    {
    
        System.out.println("toets");
        switch (arg0.getKeyCode()) 
        {
            case KeyEvent.VK_UP:
            System.out.println("up");
            naarBoven();
            break;

            case KeyEvent.VK_DOWN:
            System.out.println("down");
            naarOnder();
            break;
            
            case KeyEvent.VK_LEFT:
            System.out.println("left");
            naarLinks();
            break;

            case KeyEvent.VK_RIGHT:
            System.out.println("right");
            naarRechts();
            break;          
        }
        //en opnieuw teken
        repaint();
    }

Acties:
  • 0Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 05-06 10:41

NMe

Quia Ego Sic Dico.

Wát lukt er dan niet? Wat gebeurt er? Wat gebeurt er niet dat je wel verwacht? En wat zie je als je bij het debuggen door je code stept?

[Voor 27% gewijzigd door NMe op 01-07-2011 14:21]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0Henk 'm!

  • Anoniem: 241683
  • Registratie: November 2007
  • Niet online
Nou kun je gaan debuggen. Je hebt een werkende versie, dat maakt het een stuk makkelijker :)

Nu heb je twee methoden(de eerste is iets eleganter)
- Verschillen bepalen tussen de stukken code en dan delen gaan veranderen/testen
- Je huidige code blijven strippen totdat het werkt

Acties:
  • 0Henk 'm!

Anoniem: 398026

Topicstarter
NMe schreef op vrijdag 01 juli 2011 @ 14:20:
Wát lukt er dan niet? Wat gebeurt er? Wat gebeurt er niet dat je wel verwacht? En wat zie je als je bij het debuggen door je code stept?
Ik kan mijn 'peetje' niet meer bewegen. Wat wel lukte met de buttons.
'De slechterik' beweegt nog steeds.

init(), paint(), run() voert hij allemaal uit.
Alleen geen reactie op de Keypressed() Wat dus zeker ging met een gewoon balleke... :'(

Acties:
  • 0Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Zet dan eens een breakpoint bij het begin van de methode, en kijk of die geraakt wordt. Zo niet: implementeer je wel de KeyListener in de klasse waar deze methode in zit, en hang je de keylistener wel aan bijvoorbeeld je form, wat ook gewoon in de manual staat?
The listener object created from that class is then registered with a component using the component's addKeyListener method. A keyboard event is generated when a key is pressed, released, or typed (pressedn and released). The relevant method in the listener object is then invoked, and the KeyEvent is passed to it.

[Voor 59% gewijzigd door CodeCaster op 01-07-2011 14:45]

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


Acties:
  • 0Henk 'm!

Anoniem: 398026

Topicstarter
Anoniem: 241683 schreef op vrijdag 01 juli 2011 @ 14:22:
Nou kun je gaan debuggen. Je hebt een werkende versie, dat maakt het een stuk makkelijker :)

Nu heb je twee methoden(de eerste is iets eleganter)
- Verschillen bepalen tussen de stukken code en dan delen gaan veranderen/testen
- Je huidige code blijven strippen totdat het werkt
Heb ik nu gedaan, zonder succes.
Alles gestript tot de code bijna identiek als mijn code van mijn bewegende bal eruit ziet.
De implements Runnable is ook weg, de 'slechterik' wordt niet meer getekend noch bewogen...

@Override bij elke Key functie weggedaan.
@Override bij elke key functie geplaatst.

Ik begrijp er niets van :(

Acties:
  • 0Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 05-06 10:41

NMe

Quia Ego Sic Dico.

Anoniem: 398026 schreef op vrijdag 01 juli 2011 @ 14:29:
[...]

Alleen geen reactie op de Keypressed() Wat dus zeker ging met een gewoon balleke... :'(
Nogmaals: debuggen en door je code steppen. Dan zul je in dit geval zien dat je keyPressed-method niet aangeroepen wordt wat vast betekent dat je class de bijbehorende listener niet implementeert, zoals CodeCaster al zegt. Er is niks belangrijker dan door je code steppen om te zien of het spul wel aangeroepen wordt als dingen zoals dit mis gaan.
Anoniem: 398026 schreef op vrijdag 01 juli 2011 @ 14:39:
[...]

@Override bij elke Key functie weggedaan.
@Override bij elke key functie geplaatst.

Ik begrijp er niets van :(
Ben je nou willekeurig dingen weg aan het halen of toe aan het voegen? Dat heeft ook geen nut.

[Voor 23% gewijzigd door NMe op 01-07-2011 14:41]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0Henk 'm!

  • Rub3s
  • Registratie: Mei 2007
  • Laatst online: 11:13

Rub3s

+3 , omdat het kan

wordt "toets" al wel uitgeprint?

wat gebeurd er als je gewoon arg0.getKeyCode() uitprint? als hier iets uitkomt vergelijken met wat vk_up e.d. zijn.

Acties:
  • 0Henk 'm!

Anoniem: 145681

Dat er aan die code die gepost is niks mis is moet je nu toch al doorhebben. Als ie zelfs de System.out s niet bereikt wordt dat stukje code gewoon niet getriggerd
Heb je deze al eens doorgenomen ?

[Voor 18% gewijzigd door Anoniem: 145681 op 01-07-2011 19:55]


Acties:
  • 0Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 11-05 20:39
Ik denk dat CodeCaster het juiste antwoord geeft, kijk of je de KeyListener juist hebt geimplementeerd.
http://download.oracle.co...g/events/keylistener.html

[Voor 3% gewijzigd door Jegorex op 01-07-2011 22:32]


  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Let ook op dat je element waaraan je listener zit focus heeft.
Specifically, key events are fired by the component with the keyboard focus when the user presses or releases keyboard keys.

Anoniem: 398026

Topicstarter
HET WERKT! :)

Bedankt aan allen voor de antwoorden. Echt.
Daardoor ben ik blijven proberen tot het lukte.

Ik heb de code gestript tot alles (thread, buffer, etc) weg was. Toen kon ik wel mijn peetje met toetsen laten bewegen :-)
Ik ben dan gewoon regel per regel herbegonnen.

Jammer genoeg weet ik wel niet waar mijn fout lag... 8)7
Rub3s schreef op vrijdag 01 juli 2011 @ 14:51:
wordt "toets" al wel uitgeprint?

wat gebeurd er als je gewoon arg0.getKeyCode() uitprint? als hier iets uitkomt vergelijken met wat vk_up e.d. zijn.
Neen, ook de toets werd niet geprint... :'(

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 05-06 10:41

NMe

Quia Ego Sic Dico.

Anoniem: 398026 schreef op zaterdag 02 juli 2011 @ 23:18:
HET WERKT! :)

Ik heb de code gestript tot alles (thread, buffer, etc) weg was. Toen kon ik wel mijn peetje met toetsen laten bewegen :-)
Ik ben dan gewoon regel per regel herbegonnen.

Jammer genoeg weet ik wel niet waar mijn fout lag... 8)7
Nogmaals: door je code steppen. Je kan dan variabelen inspecten en dan zie je precies waar het mis gaat. Scheelt je een hoop tijd, want je kan lang niet altijd maar gewoon even alles weggooien en opnieuw beginnen (al is het zeker goed dat je daar niet bang voor bent, want soms is het juist wel een goed idee ;)).

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 10:59
Zoals al eerder geopperd is dit waarschijnlijk een focus probleem geweest.
Het component dat de KeyListener implementeert moet focus hebben, anders komen er geen events binnen.
Een het gebruik van key bindings is vaak een bruikbaarder alternatief.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee