【发布时间】:2014-02-28 02:06:15
【问题描述】:
好的,所以我有这段代码,显然渲染方法中的“g = gd”没有修改“g”的字段值。
我怎样才能让渲染方法修改字段g?
我想要一个图形字段,这样我就可以使用图形在渲染方法之外打印字符串,但我真的不知道该怎么做。
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
编辑:
好的,这是整个课程我如何修改它以使 displayMessage 工作? 在 render() 之前调用了 tick() ,这可能是一个问题?
package com.andrewxd.spaceinvaders.levels;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import com.andrewxd.spaceinvaders.main.Core;
public class Tutorial implements Levels{
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
public void tick() {
displayMessage("Welcome", 200,200);
}
public void displayMessage(String message, int x, int y) {
g.setFont(new Font("ARIAL", Font.BOLD, 20));
g.setColor(Color.RED);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font) {
g.setFont(font);
g.setColor(Color.WHITE);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font, Color color) {
g.setFont(font);
g.setColor(color);
g.drawString(message, x, y);
}
}
【问题讨论】:
-
您不能从
void方法返回值。 -
render正在修改g。 -
更改您传递给方法的相同引用...
-
渲染不修改 g。因为我试图在 tick() 方法中使用 g.drawString() 并且它根本不起作用.. 我使用 System.out.println 来查看是否调用了该方法并且它是.. 但是 g.drawString()在渲染方法之外根本不工作
-
你错了。问题不在于获得价值,而在于在渲染方法之外进行绘制,这可能是一个坏主意。让我们结束这个问题。另一个差评。