制作我第一个java小游戏遇到的问题, 以备后用

1. Image im这是全局变量。 当你在panel中已经声明为全局, 那么gameRender即离屏绘制的时候就不要再声明一个image im了, 否则在gamePaint即屏幕显示的是同一个im。

2. Graphics有drawImage方法:

public abstract booleandrawImage(    Image img,                                  

int x,                                  

int y,                                 

 ImageObserver observer)

img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
x - x 坐标。
y - y 坐标。
observer - 转换了更多图像时要通知的对象。

在前屏显示时将离屏绘制的image对象显示就可用次语句 g.draw(im, 0, 0, null)

Graphics另一个drawImage方法
public abstract boolean drawImage(Image img,
                                  int dx1,
                                  int dy1,
                                  int dx2,
                                  int dy2,
                                  int sx1,
                                  int sy1,
                                  int sx2,
                                  int sy2,
                                  ImageObserver observer)


img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
dx1 - 目标矩形第一个角的 x 坐标。
dy1 - 目标矩形第一个角的 y 坐标。
dx2 - 目标矩形第二个角的 x 坐标。
dy2 - 目标矩形第二个角的 y 坐标。
sx1 - 源矩形第一个角的 x 坐标。
sy1 - 源矩形第一个角的 y 坐标。
sx2 - 源矩形第二个角的 x 坐标。
sy2 - 源矩形第二个角的 y 坐标。
observer - 当缩放并转换了更多图像时要通知的对象。

一般清空下dy1, dy2, sy1, sy2的值无需改变, 可根据窗口尺寸设置为固定值。于是我们可以写另一个drawRibbon()来封装该drawImage方法
private void drawRibbon(Graphics g, BufferedImage im,int dx1, int dx2, int sx1, int sx2) 
	/* The y-coords of the image always starts at 0 and ends at
    	   pHeight (the height of the panel), so are hardwired. 
	*/ 
{
        g.drawImage(im, dx1, 0, dx2, pHeight,sx1, 0, sx2, pHeight, null);
}

产生做这个游戏是我从网上看了有人做了一个c++写的游戏, 所以我实训的时候就用java做了一个, 游戏界面与之前类似, 但实现原理截然不同





                                                                                              



        



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值