谢谢你过来。
我遇到了 Box2DLights 的 2 个问题。
第一个问题并不重要,但是第二个,
#1:处理灯光
我有多个 PointLights 跟随一个 porjectile。因此,每个 porjectile 都有一个 ArrayList,其中包含它需要的所有 PointLights。当 porjectile 击中一个物体时,所有的 Lights 都应该被处理掉。显然这是个问题。
if(hit){
deleted = true;
for(int i = 0; i<myLight.size();i++){
myLight.get(i).dispose();
}
}
这会导致致命的异常
Java 运行时环境检测到一个致命错误:EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc6fc59f58, pid=6944, tid=6676 JRE 版本:Java(TM) SE Runtime Environment (8.0_45-b15) (build 1.8.0_45- b15) Java VM:Java HotSpot(TM) 64 位服务器 VM(25.45-b02 混合模式 windows-amd64 压缩 oops)有问题的框架:C [ntdll.dll+0x39f58] 无法写入核心转储。默认情况下,在 Windows 的客户端版本上不启用小型转储
我想,问题在于 ArrayList 无法再引用已处置的对象。问题是如何更好地做到这一点。
#2:ConeLight 使我的 JavaTm 崩溃(?)
在我的游戏中添加 ConeLight 时
playerLight = new ConeLight(this,100,Color.WHITE,100,1920f/2f,1080f/2f,0,60);
//used "this" because I called this method in a class that extends RayHandler
当按下“播放”时,我的游戏在主菜单中冻结,主菜单屏幕冻结并出现一个小窗口,上面写着:
“Java(TM) SE 二进制文件不再工作”
然而,PointLight 可以完美运行。老实说,我不知道这是我的错还是错误。