用java做个游戏,一个球在面板中移动时,我是不断在timer中改变球的坐标再刷新屏幕。
这样的效果总感觉有点停滞,一顿一顿,有时有点 闪烁。我想知道如何实现像flash动画里那么流畅的移动效果???双缓存可以减少闪烁,怎末在面板里用双缓冲???还有什么其他的方法可以保证移动的流畅性???
这样的效果总感觉有点停滞,一顿一顿,有时有点 闪烁。我想知道如何实现像flash动画里那么流畅的移动效果???双缓存可以减少闪烁,怎末在面板里用双缓冲???还有什么其他的方法可以保证移动的流畅性???
在哪使用双缓存没有区别 只要有图形上下文接口的引用g.drawImage(memoryImage, 0, 0, this);缓存中的绘制通过获得memoryImage的Graphics来进行
但是我运行起来,总觉得键盘操作有点响应慢,比如按了一个键,换一个的时候,物体总有个间隔时间。不流畅。
网络上有些游戏,用上下左右控制时就很流畅,相信大家都玩过。2.让物体自由移动,我使用了timer,timer里改变物体坐标,比如增加一个小距离LEN,然后把timer设置延迟为
DELAY。
我想物体移动的很快,我就把DELAY都设置到10了,但是我为了让物体移动连续性,LEN就设置的很小,比如5
这样一来,移动就慢了。
怎样可以做到平衡,让物体移动的快又连续?
那按楼上的说法就不行了,小数来增加距离,那么一次移动就太不明显,也会导致慢
/**
* 重写父类Frame的update方法用于实现双缓冲
* 用update来截住paint
*/
public void update(Graphics g) {
if(offScreenImage == null) {
offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);//创建背景图片
}
Graphics gOffScreen = offScreenImage.getGraphics();//获得背后图片的画笔
Color c = gOffScreen.getColor();//获取背景色
gOffScreen.setColor(Color.green);//
gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
gOffScreen.setColor(c);//重刷新背景色
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}