java - Sprite not moving on JPanel -
java - Sprite not moving on JPanel -
i'm trying simple sprite moving around screen. can't head around wrong code i've followed instructions different source code removed complexity added other features in other code. right i'm trying move around freely on screen. later intend animation alter while moving. code both classes below.
package game; import java.awt.graphics; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.keyadapter; import java.awt.event.keyevent; import javax.swing.jpanel; import javax.swing.timer: public class game extends jpanel implements actionlistener { int x, y, b_width, b_height; player player; timer timer; public game() { addkeylistener(new keyrecorder()); player = new player(); timer = new timer(5, this); timer.start(); } public void paint(graphics g){ g.drawimage(player.image, player.getx(), player.gety(), this); } @override public void actionperformed(actionevent e) { player.move(); repaint(); } public class keyrecorder extends keyadapter{ public void keypressed(keyevent e){ player.keypressed(e); repaint(); } public void keyreleased(keyevent e){ player.keyreleased(e); } } }
and sprite:
package game; import java.awt.graphics; import java.awt.image; import java.awt.event.keyevent; import javax.swing.imageicon; public class player { private string sprite = "sprite.png"; int x, y, dx, dy; int width, height; image image; public player() { imageicon ii = new imageicon(this.getclass().getresource(sprite)); image = ii.getimage(); } public int getx(){ homecoming x; } public int gety(){ homecoming y; } public void move() { x = x + dx; y = y + dy; } public void keypressed(keyevent e){ int key = e.getkeycode(); if(key == keyevent.vk_up){ dy -= 3; } if(key == keyevent.vk_down){ dy += 3; } if(key == keyevent.vk_left){ dx -= 3; } if(key == keyevent.vk_right){ dx += 3; } } public void keyreleased(keyevent e){ int key = e.getkeycode(); if(key == keyevent.vk_up){ dy -= 0; } if(key == keyevent.vk_down){ dy += 0; } if(key == keyevent.vk_left){ dx -= 0; } if(key == keyevent.vk_right){ dx += 0; } } }
custom painting done overriding paintcomponent() method, not paint() method.
keyevents received comonents focus. doesn't panel has focus. in constructor need add:
setfocusable(true);
java sprite keylistener
Comments
Post a Comment