I created a boss level in my game. I intended to animate one of it's attacks by coding the animation in actor's code. I call it to spawn in The Boss's class but i get a heap space error when i run it on that level. At first it said that the error was when I called LaserAttack().
Now it's giving me this error.
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:75)
at java.awt.image.Raster.createPackedRaster(Raster.java:467)
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:333)
at com.sun.java.swing.plaf.windows.XPStyle$SkinPainter.createImage(XPStyle.java:681)
at sun.swing.CachedPainter.paint0(CachedPainter.java:139)
at sun.swing.CachedPainter.paint(CachedPainter.java:111)
at com.sun.java.swing.plaf.windows.XPStyle$Skin.paintSkinRaw(XPStyle.java:615)
at com.sun.java.swing.plaf.windows.XPStyle$Skin.paintSkin(XPStyle.java:594)
at com.sun.java.swing.plaf.windows.XPStyle$XPImageBorder.paintBorder(XPStyle.java:370)
at javax.swing.border.TitledBorder.paintBorder(TitledBorder.java:329)
at javax.swing.JComponent.paintBorder(JComponent.java:949)
at javax.swing.JComponent.paint(JComponent.java:1057)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JViewport.paint(JViewport.java:728)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.security.ProtectionDomain$JavaSecurityAccessImpl.getCombinedACC(ProtectionDomain.java:91)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:78)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-Windows" java.lang.OutOfMemoryError: OutOfMemoryError
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(WToolkit.java:306)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "SimulationThread" Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI RenewClean-" java.lang.OutOfMemoryError: Java heap space
Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heap space
Here is my code for the boss.
here is the code for my laser Beam actor that is fired by my boss.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Boss1 here. * * @author (your name) * @version (a version number or a date) */ public class Boss1 extends Everyone { private static GreenfootSound Beam = new GreenfootSound("BeamEffect.wav"); private static int BHealth=500; private static int timeToBeam=200; /** * Act - do whatever the Boss1 wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { while(BHealth >= 250) { timeToBeam--; if(timeToBeam==0) { LaserAttack(); timeToBeam= 200; } } } public void LaserAttack() { getWorld().addObject(new BossBeam(), getX(), getY()); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class BossBeam here. * * @author (your name) * @version (a version number or a date) */ public class BossBeam extends Actor { private int atime=0; /** * Act - do whatever the BossBeam wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { while(atime <=20) { atime++; if(atime==3) { setImage("BeamAN2.png"); } if(atime==4) { setImage("BeamAN3.png"); } if(atime==5) { setImage("BeamAN4.png"); } if(atime==6) { setImage("BeamAN5.png"); } if(atime==7) { setImage("BeamAN6.png"); } if(atime==8) { setImage("BeamAN7.png"); } while(atime<14) { setImage("BeamAN8.png"); setImage("BeamAN9.png"); } if(atime==14) { setImage("BeamAN10.png"); } if(atime==15) { setImage("BeamAN11.png"); } if(atime==16) { setImage("BeamF12.png"); } if(atime==17) { setImage("BeamF13.png"); } if(atime==18) { setImage("BeamF14.png"); } if(atime==19) { setImage("BeamF15.png"); } if(atime==20) { getWorld().removeObject(this); } } } }