Rendering in Java - BufferedImage and Graphics -


so, after finishing 2d game in c# / xna topics questions before, i've decided jump java because find myself more comfortable java.

that being said, while working away on bufferedimage based project, decided figure out how render sprites screen, in case ever needed work around ui. problem i've hit when try render bufferedimage using graphics portion of java, thing ever shows test text i've put. upper portion , left portion of applet have thing line going top-right , bottom-left, respectively. feel if error simple, it's late, easy on me.

my core class here:

package com.merganen;  import java.applet.applet; import java.awt.color; import java.awt.dimension; import java.awt.graphics; import java.awt.image; import java.awt.point;  import javax.swing.jframe;  import com.merganen.entity.player;  public class game extends applet implements runnable{      private static final long serialversionuid = 1l;      private static jframe frame;     public static string title = "the world of lur 0.0a";      private static int width = 600;     private static int height = 400;     private static dimension screensize = new dimension(600, 400);     public static dimension pixel = new dimension(screensize.width, screensize.height);     private image screen;      public long fps = 60;      private boolean running = false;      public player player;      public game()     {         setpreferredsize(screensize);     }      public void tick()     {      }      public void render()     {         graphics g = screen.getgraphics();         g.setcolor(color.black);         g.drawrect(0, 0, width, height);          player.render(g);          g.setcolor(color.red);         g.drawstring("test", 100, 100);          g = this.getgraphics();         g.drawimage(screen, 0, 0, null);         g.dispose();     }      public static void main(string[] args)     {         game game = new game();          frame = new jframe(game.title);         frame.add(game);         frame.pack();          frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.setresizable(false);         frame.setlocationrelativeto(null);         frame.setvisible(true);          game.start();     }      public void run()     {         screen = createvolatileimage(pixel.width, pixel.height);          player = new player(new point(0, 0), new point(100, 100));          while (running)         {             render();         }     }      public void start()     {         running = true;         new thread(this).start();     }      public void stop()     {         running = false;     }  } 

my player class here (the player class extended entity class, wherer rendering handled, not in actual player class).

package com.merganen.entity;  import java.awt.point; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception;  import javax.imageio.imageio;  public class player extends entity {      public bufferedimage spritesheet;      public player(point basesprite, point startposition)     {          try {             spritesheet = imageio.read(new file("res/test character.png"));             system.out.println("player texture loaded");         } catch (ioexception e) {             system.out.println("error loading player texture");             e.printstacktrace();         };           this.sheet = spritesheet;         this.spritexy = basesprite;         this.pos = startposition;     }  } 

just note, had make new constructor 1 planned use in entityt class that's got not parameters, literally nothing in because otherwise i'd error said "implicit super constructor entity() undefined.

entity class:

package com.merganen.entity;  import java.awt.dimension; import java.awt.graphics; import java.awt.point; import java.awt.image.bufferedimage;  public class entity {      protected bufferedimage sheet;     protected bufferedimage sprite;      protected point spritexy;     protected point pos;     private int sprite_size = 32;      public entity(bufferedimage img, point basesprite, point startposition)     {         sheet = img;         spritexy = basesprite;         sprite = sheet.getsubimage(basesprite.x, basesprite.y, sprite_size, sprite_size);         pos = startposition;     }      public entity()     {      }      public void render(graphics g)     {         g.drawimage(sprite, pos.x, pos.y, pos.x + sprite_size, pos.y + sprite_size, spritexy.x, spritexy.y, spritexy.x + sprite_size, spritexy.y + sprite_size, null);     }      public void tick()     {      }  } 

anyhow, guys see issue @ hand here? thanks.

update: sorry guys, forgot post (it late :/). "screen" class-level image variable create volatile image in run method of game, has main running loop render() inside of it. "pixel" , screensize class-level dimension , declared @ class-level:

private static dimension screensize = new dimension(600, 400); public static dimension pixel = new dimension(screensize.width, screensize.height); 

i've updated code-blocks had before contain whole of current classes, rather snippets, barely understand own code morning when looked @ snippets.

thanks again.


Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -