Java Swing游戏开发学习8

本文讲述了在JavaSwing中遇到的bug,即使用同一个clip对象导致音效播放问题。还介绍了Graphics绘制中的y坐标和baseline概念,以及注意事项如避免频繁实例化对象以节省资源。最后展示了游戏中的物品变化和计时功能的代码示例。
摘要由CSDN通过智能技术生成

内容来自RyiSnow视频讲解

上一节提到的bug,不知道有没有人发现?

在播放音乐和音效的时候使用的是同一个clip对象,播放背景音乐在前,后续播放音效,clip对象就被覆盖了,因此导致调用停止播放背景音乐的时候,就无法停止了。

这一节实现了游戏窗口显示游戏中的一些数据,比如物品数量、所用时间、游戏通知…

文本绘制

在Java Swing的Graphics绘制中,drawString和draw其他对象的y坐标所表示的点是不同的,
一般来说y坐标代表的是绘制对象的左上角的y坐标,可是在绘制文字的时候,y坐标表示的是
文字的baseline,这一点常常使人感到迷惑和迷茫。因为baseline表示的既不是top顶部也不是
bottom底部,可以看下图,baseline表示的具体意思。
在这里插入图片描述

所以在绘制的时候要注意这一点,进行一些调整,以适应具体的位置。

关于文字的绘制,还有Ascent和Descent,调试看了一下,Graphics2D中的getFontMetrics()得到的是FontDesignMetrics实现类,40的字号,Ascent=47, Descent=12,不过这里用不到。

注意事项

在绘制循环调用的方法中,注意不要进行对象的实例化,因为60fps将会导致每秒创建60个对象,
会非常消耗时间和内存资源,提前初始化好,在draw方法中调用即可。

效果

  1. 玩家获得普通游戏物品
    在这里插入图片描述
    上图中,当玩家获得钥匙,左上角钥匙数量将发生变化。左边将出现一个文字说明,2秒后消失。

  2. 当玩家打开所有门,获得宝箱,游戏就结束了。
    在这里插入图片描述
    游戏结束后,有一个恭喜提示并显示所用时间,

代码

代码链接请参考第6篇文章底部,后续会把目前完成的功能打包一个可执行jar包,上传到下载中,可以下载下来执行java -jar jar文件名开始游戏。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值