所以我正在制作一个游戏,你可以将炸弹放在角色的位置上.当炸弹显示时,每个炸弹都与一个GIF图像相关联,并最终变成BOOM(想想炸弹人).
问题是,当我试图在屏幕上绘制多个炸弹时,它是从GIF的最后一帧画的.调查,我发现方法image.flush()重置GIF cicle但现在的问题是,每次我在屏幕上绘制第二个炸弹时,GIF循环将重置为屏幕上所有以前的炸弹.
这是我每个炸弹的构造函数:
public Tnt(int x, int y){
this.x = x;
this.y = y;
ImageIcon ii = new ImageIcon("src/main/resources/modelObjects/tnt.gif");
image = ii.getImage();
image.flush();
}
Run Code Online (Sandbox Code Playgroud)
我创建的每个炸弹进入一个ArrayList(listTnt),并在6秒后被移除,所以我只绘制已经激活的炸弹.
这是我绘制的方法:
public void draw(Graphics2D g2d, JPanel board){
for(Tnt tnt: listTnt){
g2d.drawImage(tnt.getImage(), tnt.getX(), tnt.getY(), board);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:似乎问题是ImageIcon,因为它使用Toolkit.getImage重用图像.相反,Toolkit.createImage创建一个不可重用的图像.
这是我对Tnt的新构造函数,它完美地工作:
public Tnt(int x, int y){
this.x = x;
this.y = y;
Toolkit t = Toolkit.getDefaultToolkit ();
image = t.createImage("src/main/resources/modelObjects/tnt.gif");
}
Run Code Online (Sandbox Code Playgroud)
我image.flush()现在甚至都不需要.谢谢你们.
所以我有这个字符串例如
"B\z@b@s@rB{FpMgBrD~DK|"
Run Code Online (Sandbox Code Playgroud)
但是 Spring 正在以 json 生成这个:
"B\\z@b@s@rB{FpMgBrD~DK|"
Run Code Online (Sandbox Code Playgroud)
对于任何带有反斜杠的字符串都是一样的\。在生成 json 之前替换字符是没有用的,因为在生成 json 之前字符串是正确的。
每个使用该服务的客户端都可以 .replace("\\","\\\\") json,但我想知道是否有更干净的方法来解决服务器端的问题。
下面是 WS 的代码:
@RequestMapping(value = "/rest/sinc/{ms}", method = RequestMethod.GET, produces="application/json;charset=UTF-8")
@ResponseBody
public String sincronizar(@PathVariable("ms") Long ms) {
return sincService.getSinc(ms).toString();
}
Run Code Online (Sandbox Code Playgroud)
我尝试过其他方法来使用 Gson 等库生成 json,但结果是相同的。