4.9w+
社区成员
public class MoveThread extends Thread {
private XXX xxx;//
private LinkedBlockingQueue<Point> queue = new LinkedBlockingQueue<Point>();
public MoveThread(XXX xxx){
this.xxx = xxx;
}
public void move(int x,int y){
queue.add(new Point(x, y));
}
@Override
public void run() {
while(!Thread.interrupted()){
Point point = queue.take();
//下面根据point进行移动操作
xxx.xxx();
}
}
}
或者
public class MoveThread extends Thread {
private XXX xxx;//
private Point point;
public MoveThread(XXX xxx){
this.xxx = xxx;
}
public void move(int x,int y){
synchronized (this) {
point = new Point(x, y);
this.notifyAll();
}
}
@Override
public void run() {
while(!Thread.interrupted()){
synchronized (this) {
if(point==null){
this.wait();
}else{
//移动处理
point = null;//处理完之后,将point置为null
}
}
}
}
}
public class PlayAct1 extends JPanel implements Runnable,KeyListener {
//背景图片
BufferedImage backgroundImage;
//主角
Gava gava;
public PlayAct1() {
// TODO Auto-generated constructor stub
init();
setBounds(0, 0, screenHeight, screenHeight);
setFocusable(true);
addKeyListener(this);
backgroundImage=Resource.backGrpundImages[0];
setVisible(true);
}
private void init() {
gava=new Gava(160, 560, 80, 80,Resource.gavaImages);
}
private void UpDateBG(){
gava.UpDateBullet();
}
public void run(){
while(true){
this.UpDateBG();
this.repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.drawImage(backgroundImage, 0, 0,this);
gava.DrawGava(g, this);
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int key=e.getKeyCode();
switch (key) {
case KeyEvent.VK_W://跳跃
gava.Jump();break;
case KeyEvent.VK_A://向左移
gava.ToLeft();break;
case KeyEvent.VK_D://向右移
gava.ToRight();break;
case KeyEvent.VK_J://
gava.Shoot();break;
case KeyEvent.VK_F:
//gava.GetBullet(bullet);
default:
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}