这是代码
player = createEntity(400, 600, 40, 60, Color.BLUE);
private Node createEntity(int x, int y, int w, int h, Color color) {
Rectangle entity = new Rectangle(w, h);
entity.setTranslateX(x);
entity.setTranslateY(y);
entity.setFill(color);
gameRoot.getChildren().add(entity);
return entity;
}
我不确定如何将图像放到我的播放器上,有什么想法吗?
答案 0 :(得分:3)
Java如何将图像放在矩形
上
我的建议(如果这是Swing)不是使用Rectangle,要么使用Rectangle但是作为更大解决方案的一部分。
相反,我创建了一个逻辑类,可能称为Entity,它有一个位置,一个图像和一个draw方法,它接受一个Graphics参数在任何需要的位置绘制它的图像,然后创建Entity对象。然后在我的JPanel的paintComponent方法中,我遍历所有创建的实体,调用它们的draw方法。
答案 1 :(得分:0)
首先,您要使用active rendering。这样可以防止您遇到与刷新显示相关的各种问题,并且Java BufferStrategy
会自动为您处理多缓冲,假设您请求多个缓冲区。
现在您确定屏幕已更新,在渲染时,您可以使用java.awt.Graphics
方法绘制带有drawRect
对象的矩形。如果您想填充此矩形,请使用fillRect
。 Graphics
对象以预定义的颜色绘制所有内容。如果您想更改颜色,可以致电setColor
。此方法需要java.awt.Color
对象作为参数,这允许您使用其中一个构造函数定义所有可能的64位透明颜色。它还有一些预定义的颜色,例如Color.RED
,即0xFF0000
。
我建议您浏览Graphics
提供的所有方法,甚至可以查看Graphics2D
,它支持一些额外的内容。请注意,大多数Graphics
个对象都可以转换为Graphics2D
,但如果您不确定,您可能要查看Java的源代码(有{{1}在JDK安装中)或使用src.zip
检查。事实上,instanceof
支持使用Graphics2D
或Rectangle
方法绘制drawShape
形状。
对于那些好奇的人,fillShape
是一种格式化颜色的方式。它被RGB编码为十六进制(0xFF0000
)。它在其他语言中通常也代表0xRRGGBB
,例如CSS(层叠样式表,用于轻松格式化HTML文档)