首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java applet中使对象移动平滑

在java applet中使对象移动平滑
EN

Stack Overflow用户
提问于 2012-07-25 19:41:25
回答 2查看 2.9K关注 0票数 0

嗨,朋友们,我正在尝试写一个简单的程序,将移动一个小方块向右,向左,向上和向下平滑。

现在,正方形确实会在四个方向上移动,但当试图改变正方形的方向时,会有一个明显的延迟。我计划最终写一个类似于‘砖头’游戏的小游戏,但为了做到这一点,我的对象必须平滑地移动。有人能给我一些关于如何实现这一点的建议吗?

代码语言:javascript
复制
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;

public class FutureGame extends Applet implements KeyListener{

int deltax; 
int deltay;

public void init(){

    deltax = 0;
    deltay = 0;
    this.addKeyListener(this);
}

@Override
public void keyPressed(KeyEvent ke) {

    if(ke.getKeyCode() == ke.VK_RIGHT){
        deltax = deltax +10;
    }

    if(ke.getKeyCode() == ke.VK_LEFT){
        deltax = deltax - 10;
    }

    if(ke.getKeyCode() == ke.VK_UP){
        deltay = deltay - 10;
    }

    if(ke.getKeyCode() == ke.VK_DOWN){
        deltay = deltay +10;
    }
    this.repaint();
}
@Override
public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

}

public void paint(Graphics g){

    g.drawRect(deltax, deltay, 10, 10);
}

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 19:44:34

如果你的线程(游戏的主要计算)的休眠/等待时间非常小,那么你的按键监听器就不能在这么短的时间内捕捉到你的击键。增加线程等待时间,然后重试。我指的是try-catch块中的内容。

您正在直接绘图。使用缓冲/双缓冲。

代码语言:javascript
复制
Changing the buffer is much more faster than changing the contents of screen.
票数 1
EN

Stack Overflow用户

发布于 2012-07-25 19:48:05

首先使用paintComponent()作为绘制方法,然后将Graphics g转换为Graphics2D -使其更“摇摆”,最后但并非最不重要的是遵循java2s.com站点java2s.com - Advanced Graphics - Smooth Moves中的代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11648911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档