问题标签 [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.
java - 战舰游戏 - 船只重叠
我正在使用 ACM 库用 Java 编写一个简单的战舰游戏。游戏开始后,船只应该随机放置在画布上,但问题是船只可能会相互覆盖,这在游戏中是不允许的。我怎样才能避免船被放置在彼此之上?
我的代码是:
如您所见,我在 for 循环中放置了一个 while 循环,但这无济于事。
java - Java:移除 Runnable Canvas 组件
我已经在这个游戏上工作了一段时间,它实际上内置了不同的游戏模式。起初,我一直exiting the program
在用户丢失或想要退出之后处理执行。因为不仅必须重新打开程序很烦人,而且当用户不明白它为什么关闭时,我有理由在丢失或想要退出后返回主菜单。
此时出现的问题是我swing
在游戏设计的主要部分中使用。这不仅包括主菜单,还包括其他菜单,甚至是游戏的一部分。Swing
用于按钮和其他主要功能的交互性。所以现在我要切换到返回主菜单和所有内容,我不得不基本上重写整个窗口的基础rendering
和在窗口之间切换。
由于我正在重写render
游戏的方法,所以我决定制作一个StateRenderer
类。由此,它将处理并决定它当前是否需要处理。因此,在该run()
方法中,我放置了一行代码来检查它是否甚至需要在菜单状态下呈现。
现在,当我决定从主菜单切换到实际游戏模式时效果很好,但是如果我在模式上失败,或者想退出主菜单,我会收到这个令人讨厌的错误,我不知道我是怎么做到的会修复它:
我理解的唯一部分是我在使用 AWT 做一些完全错误的事情,它处理诸如Graphics
和之类的事情Canvas
。仅仅用 try..catch 方法吞没错误可能是一个可怕的想法,但话又说回来,我真的不知道它是在哪里引起的。
要详细了解我如何切换,这里是从我的主菜单到实际游戏模式:
My renderer
is myStateRenderer
旨在处理游戏的所有渲染,当您实际上位于具有该Canvas
元素的屏幕上并由GameState
. 现在我将向您展示该renderer.switchDisplay(Class class)
方法中的内容。
这可能有点低效,但所有这些似乎都工作得很好。现在深入了解当一切都切换回引发所有错误的主菜单时!
这是直接导致错误的运行代码:
当然,这给了我一个完整的感觉,即错误存在于我的StateRenderer
班级的某个地方,更具体地说,是任何与该run()
方法相关的东西。我已经处理了有关渲染的循环的部分。
总结
因此,当我从具有Canvas
组件的面板切换时遇到问题,该组件实现Runnable
. 在我的代码中,我已经处理了当它没有可见时渲染的问题Canvas
,或者当GameState
它不是供游戏渲染的时候。但是,当从当前正在渲染和更新的画布切换到没有这样做的菜单时,会导致 NullPointerException。
我想继续感谢任何人和每个人的帮助,因为这个问题真的让我很难过。
编辑
通过在寻求帮助时我总是决定进行的进一步测试,我发现问题出现在CellDefender.switchDisplay()
该行的方法中frame.validate()
。我不明白为什么这会导致问题。
java-me - getHeight() 的奇怪行为
我正在创建一个 J2ME 游戏,我注意到 getHeight() 函数的奇怪行为。
而不是以像素为单位给出全屏的高度,它似乎返回的比那个少
我的代码:
游戏画布.java:
放置时 int h=getHeight(); 在方法内部它返回 309 这是正确的,当放置 int H=getHeight(); 外部方法它返回 291 这是错误的
getWidth 没有问题。w 和 W 都返回 240。
那么,是什么导致了 getHeight() 的这种异常行为呢?
java - 更新 Canvas 时如何避免使用缓冲策略闪烁
我正在用 Java 编写平台游戏。一切正常,没有更大的问题,除了Canvas
更新时屏幕上的闪烁。
我将大致解释一下我的游戏“引擎”是如何工作的:在我的主要方法中,我有一个循环,它每秒重复 30 次:
我的 FPS 变量static final int
当前设置为 30。所以我每秒更新我的 Canvas 30 次。
Play 是一个布尔值,它控制游戏是否仍在进行,或者玩家是否死亡。
Can
是我班级的一个实例MyCanvas.java
。paint() 方法的代码如下所示:
所以,正如你所看到的,我更新了很多 - 每秒 30 次。这导致我的游戏(顺便说一句以全屏模式播放)一直闪烁的问题。如何解决这个问题?缓冲策略是正确的方法吗?如果是,我该怎么做?您能否解释一下 Bufferstartegy 或提供有很好的教程或解释的链接,哪些对技术和非初学者友好?那很好啊。
java - Java:图形对齐字符串
我目前正在尝试创建一个滚动文本方法,其中将采用String
. 很快,它将开始从左到右绘制,并随着时间的推移进入新的行,因此它不会从屏幕上绘制出来。我正在使用FontMetrics
来尝试实现我的目标。
我RollingText.render(Graphics g, int x, int y)
从我的主类中的渲染方法将参数传递给我。在我的render
方法中,我开始设置Graphics
字体和颜色,并抓取所有 . FontMetrics
,然后我开始从FontMetrics
. 同样,我进入一个用于将文本绘制到字符串的 for 循环。
目前,此时一切都会正常工作,但留下的问题是drawString
方法中每个单词之间的空格被严重夸大了,如下所示:
该行:
我目前遇到的唯一问题是找到正确的方法来计算 x 位置。目前,它的间距很大且动态取决于字长,我无法弄清楚如何让它看起来至少正常。我用我当前定义的整数尝试了不同的组合,等等。出现的问题包括不正确的间距、不恰当的定位和闪烁,以及一起运行的文本。
最后,我的问题是,将使用哪种算法来帮助我正确定位 x 坐标以使文本看起来正确?
android - 不画线
我想从A点到B点画一条虚线
这是我的代码:
但从未画出路径
请帮忙!
提前致谢。
java - 画布中的拖放更改仅在最小化后可见
此代码片段是实现将文本拖放到画布上的更大类的一部分。问题是,在我删除它之后,在画布上看不到实际的文本删除,但只有在我最小化外壳然后再次最大化它之后。谁能告诉我如何通过修改此代码使删除操作立即可见?
java - 如果文本太长,请在 java 中压缩文本
我想在我的软件中添加打印功能,这需要压缩不适合它们在文本框中的文本(字母不应垂直收缩)。
使用标准的 java 方法可以做到这一点,还是有人知道好的扩展?
我想要附上图片上的文字
谢谢!
java - 如何找出在一个 GWT 网格画布中选择了哪一行?
我正在制作一个像这样的GWT 网格画布
我的gridCanvas
对象有水平线代表路径。此外,该对象具有代表部分的垂直线。
我想知道如何获得用户的选择,例如,如果用户选择了路线或路段,以及选择了哪个路线或路段。
这里是案例的 截图。
java - 如何在 Swing jframe 中嵌入 SWT 浏览器
我想将我的 SWT 浏览器嵌入到 swing jframe 中。我尝试sample,但它需要调整窗口大小以加载浏览器窗口。在不调整大小的情况下,我能做些什么来重新绘制画布?