如何在不退出整个应用程序的情况下基于该特定帧内的JPanel上的模拟退出特定帧?
在我的主类中,我有一个Frame()方法
public void FightFrame(String offensemsg){
JFrame frame = new JFrame("BattleView: ");
frame.setLayout(new BorderLayout());
FightScene sc = new FightScene();
frame.add(sc);
frame.setVisible(true);
frame.setSize(652, 480);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
sc.GenerateScene(offensemsg);
}
Run Code Online (Sandbox Code Playgroud)
在我的FightScene类中,我正在绘制一个fightscene,该类也有checkCollision()方法
public void checkCollisions() {
for (int i = 0; i < defense.size(); i++) {
FriendlyEntity m = (FriendlyEntity) defense.get(i);
Rectangle r1 = m.getBounds();
for (int j = 0; j<offense.size(); j++) {
Enemy a = (Enemy) offense.get(j);
Rectangle r2 = a.getBounds();
if (r1.intersects(r2)) {
m.setHealth(-1);
a.setHealth(-1);
if(a.getHealth()==0){
a.setVisible(false);
} else if(m.getHealth()==0){
m.setVisible(false);
} …
Run Code Online (Sandbox Code Playgroud) 我有以下代码...(加上一个通用的Player类,包含getX,getY,setX,setY,render(),tick()等等)
我希望玩家在ViewB中加载并且当它到达边缘时...我希望ViewB关闭并被ViewA或ViewC取代(取决于它是左边缘还是右边缘)...我不能似乎完成了这个,我不知道我做错了什么.... Player类是在MainGameThread.java中创建的......然后传递给新的JPanel,这样我仍在使用原始的Player对象/ sprite被创造了......当
System.out.println("Should change screens here to ViewA");
命令碰到边缘时,命令似乎没有触发..我在这里做错了什么???? 我需要修什么课?
MainGameThread类:
import java.util.LinkedList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainGameThread extends JFrame {
private LinkedList<JPanel> screens = new LinkedList<JPanel>();
private ViewA va;
private ViewB vb;
private ViewC vc;
private ViewD vd;
private Player player;
public MainGameThread() {
player = new Player();
// load player settings from server
// ..
//
// va = new ViewA(player);
//vc = new ViewC(player);
//vd = new ViewD(Player)
vb = new ViewB(player);
screens.add(0,ViewB); …
Run Code Online (Sandbox Code Playgroud)