问题标签 [java-canvas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2179 浏览

java - 战舰游戏 - 船只重叠

我正在使用 ACM 库用 Java 编写一个简单的战舰游戏。游戏开始后,船只应该随机放置在画布上,但问题是船只可能会相互覆盖,这在游戏中是不允许的。我怎样才能避免船被放置在彼此之上?

我的代码是:

如您所见,我在 for 循环中放置了一个 while 循环,但这无济于事。

0 投票
1 回答
566 浏览

java - Java:移除 Runnable Canvas 组件

我已经在这个游戏上工作了一段时间,它实际上内置了不同的游戏模式。起初,我一直exiting the program在用户丢失或想要退出之后处理执行。因为不仅必须重新打开程序很烦人,而且当用户不明白它为什么关闭时,我有理由在丢失或想要退出后返回主菜单。

此时出现的问题是我swing在游戏设计的主要部分中使用。这不仅包括主菜单,还包括其他菜单,甚至是游戏的一部分。Swing用于按钮和其他主要功能的交互性。所以现在我要切换到返回主菜单和所有内容,我不得不基本上重写整个窗口的基础rendering和在窗口之间切换。

由于我正在重写render游戏的方法,所以我决定制作一个StateRenderer类。由此,它将处理并决定它当前是否需要处理。因此,在该run()方法中,我放置了一行代码来检查它是否甚至需要在菜单状态下呈现。

现在,当我决定从主菜单切换到实际游戏模式时效果很好,但是如果我在模式上失败,或者想退出主菜单,我会收到这个令人讨厌的错误,我不知道我是怎么做到的会修复它:

我理解的唯一部分是我在使用 AWT 做一些完全错误的事情,它处理诸如Graphics和之类的事情Canvas。仅仅用 try..catch 方法吞没错误可能是一个可怕的想法,但话又说回来,我真的不知道它是在哪里引起的。

要详细了解我如何切换,这里是从我的主菜单到实际游戏模式:

My rendereris myStateRenderer旨在处理游戏的所有渲染,当您实际上位于具有该Canvas元素的屏幕上并由GameState. 现在我将向您展示该renderer.switchDisplay(Class class)方法中的内容。

这可能有点低效,但所有这些似乎都工作得很好。现在深入了解当一切都切换回引发所有错误的主菜单时!

这是直接导致错误的运行代码:

当然,这给了我一个完整的感觉,即错误存在于我的StateRenderer班级的某个地方,更具体地说,是任何与该run()方法相关的东西。我已经处理了有关渲染的循环的部分。

总结
因此,当我从具有Canvas组件的面板切换时遇到问题,该组件实现Runnable. 在我的代码中,我已经处理了当它没有可见时渲染的问题Canvas,或者当GameState它不是供游戏渲染的时候。但是,当从当前正在渲染和更新的画布切换到没有这样做的菜单时,会导致 NullPointerException。

我想继续感谢任何人和每个人的帮助,因为这个问题真的让我很难过。

编辑
通过在寻求帮助时我总是决定进行的进一步测试,我发现问题出现在CellDefender.switchDisplay()该行的方法中frame.validate()。我不明白为什么这会导致问题。

0 投票
1 回答
104 浏览

java-me - getHeight() 的奇怪行为

我正在创建一个 J2ME 游戏,我注意到 getHeight() 函数的奇怪行为。

而不是以像素为单位给出全屏的高度,它似乎返回的比那个少

我的代码:

游戏画布.java:

放置时 int h=getHeight(); 在方法内部它返回 309 这是正确的,当放置 int H=getHeight(); 外部方法它返回 291 这是错误的

getWidth 没有问题。w 和 W 都返回 240。

那么,是什么导致了 getHeight() 的这种异常行为呢?

0 投票
1 回答
951 浏览

java - 更新 Canvas 时如何避免使用缓冲策略闪烁

我正在用 Java 编写平台游戏。一切正常,没有更大的问题,除了Canvas更新时屏幕上的闪烁。

我将大致解释一下我的游戏“引擎”是如何工作的:在我的主要方法中,我有一个循环,它每秒重复 30 次:

我的 FPS 变量static final int当前设置为 30。所以我每秒更新我的 Canvas 30 次。

Play 是一个布尔值,它控制游戏是否仍在进行,或者玩家是否死亡。

Can是我班级的一个实例MyCanvas.java。paint() 方法的代码如下所示:

所以,正如你所看到的,我更新了很多 - 每秒 30 次。这导致我的游戏(顺便说一句以全屏模式播放)一直闪烁的问题。如何解决这个问题?缓冲策略是正确的方法吗?如果是,我该怎么做?您能否解释一下 Bufferstartegy 或提供有很好的教程或解释的链接,哪些对技术和非初学者友好?那很好啊。

0 投票
1 回答
162 浏览

java - Java:图形对齐字符串

我目前正在尝试创建一个滚动文本方法,其中将采用String. 很快,它将开始从左到右绘制,并随着时间的推移进入新的行,因此它不会从屏幕上绘制出来。我正在使用FontMetrics来尝试实现我的目标。

RollingText.render(Graphics g, int x, int y)从我的主类中的渲染方法将参数传递给我。在我的render方法中,我开始设置Graphics字体和颜色,并抓取所有 . FontMetrics,然后我开始从FontMetrics. 同样,我进入一个用于将文本绘制到字符串的 for 循环。

目前,此时一切都会正常工作,但留下的问题是drawString方法中每个单词之间的空格被严重夸大了,如下所示:

滚动文本演示

该行:

我目前遇到的唯一问题是找到正确的方法来计算 x 位置。目前,它的间距很大且动态取决于字长,我无法弄清楚如何让它看起来至少正常。我用我当前定义的整数尝试了不同的组合,等等。出现的问题包括不正确的间距、不恰当的定位和闪烁,以及一起运行的文本。

最后,我的问题是,将使用哪种算法来帮助我正确定位 x 坐标以使文本看起来正确?

0 投票
1 回答
43 浏览

android - 不画线

我想从A点到B点画一条虚线

这是我的代码:

但从未画出路径

请帮忙!

提前致谢。

0 投票
1 回答
52 浏览

java - 画布中的拖放更改仅在最小化后可见

此代码片段是实现将文本拖放到画布上的更大类的一部分。问题是,在我删除它之后,在画布上看不到实际的文本删除,但只有在我最小化外壳然后再次最大化它之后。谁能告诉我如何通过修改此代码使删除操作立即可见?

0 投票
1 回答
125 浏览

java - 如果文本太长,请在 java 中压缩文本

我想在我的软件中添加打印功能,这需要压缩不适合它们在文本框中的文本(字母不应垂直收缩)。

使用标准的 java 方法可以做到这一点,还是有人知道好的扩展?

我想要附上图片上的文字

谢谢!在此处输入图像描述

0 投票
1 回答
163 浏览

java - 如何找出在一个 GWT 网格画布中选择了哪一行?

我正在制作一个像这样的GWT 网格画布

我的gridCanvas对象有水平线代表路径。此外,该对象具有代表部分的垂直线。

我想知道如何获得用户的选择,例如,如果用户选择了路线或路段,以及选择了哪个路线或路段。

这里是案例的 截图

0 投票
1 回答
5915 浏览

java - 如何在 Swing jframe 中嵌入 SWT 浏览器

我想将我的 SWT 浏览器嵌入到 swing jframe 中。我尝试sample,但它需要调整窗口大小以加载浏览器窗口。在不调整大小的情况下,我能做些什么来重新绘制画布?