私は Java でゲームを開発しており、さまざまなクラス ファイルからさまざまなレベルをロードしようとしています。各レベル クラス ファイルは jpanel です。level1 が完了すると、jpanel level1 を削除して jpanel level2 を追加するメソッドをロードするという考えでした。しかし、level1 から level2 をロードしようとすると、java.lang.OutOfMemoryError: Cannot to create new native thread が発生します。エラー
私は3つのクラスファイルを持っています:
- main: jframe と jpanels を追加するメソッドをロードします。
- level1: level1 をロードしてから、main のメソッドを介して level2 をロードします。
- level2: level2 をロードします
これは、メイン クラスのメソッドです。
public static void levelChanger(int currentMap){
map1 map1 = new map1(null);
map2 map2 = new map2(null);
if(currentMap == 1){
frame.add(map1);
frame.validate();
}else if(currentMap == 2){
frame.remove(map1);
frame.add(map2);
frame.validate();
}
}
そして、これは私がレベル1からそれを呼び出す方法です:
mainScreen.levelChanger(2);
十分な情報を提供したことを願っています。ありがとう!
これはメインクラス全体です:
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class mainScreen{
static JFrame frame = new JFrame("Tile System");
//Key variables
public static int keyUp = KeyEvent.VK_UP;
public static int keyDown = KeyEvent.VK_DOWN;
public static void main(String[] args) {
levelChanger(1);
frame.setSize ( 800, 600 );
frame.setResizable ( false );
frame.setLocationRelativeTo ( null );
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
frame.setVisible ( true );
frame.setBackground(new Color(135, 206, 250));//RGB color code
frame.setFocusable(true);
new map1(null);
}
public static void exit(){
WindowEvent wev = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev);
}
public static void levelChanger(int currentMap){
public static map1 map1 = new map1(null);
public static map2 map2 = new map2(null);
if(currentMap == 1){
frame.add(map1);
frame.validate();
}else if(currentMap == 2){
frame.remove(map1);
frame.add(map2);
frame.validate();
}
}
}