java - Rendering Image in Libgdx -
recently started developing libgdx , have encountered problem can seem resolve. want render image object scene2d screen doesn't render anything. it's shows blank screen.
here skin.json file:
{ com.badlogic.gdx.scenes.scene2d.ui.image: { logo: { drawable: logo } exit: { drawable: exit } }, com.badlogic.gdx.graphics.color: { green: { a: 1, b: 0, g: 1, r: 0 }, white: { a: 1, b: 1, g: 1, r: 1 }, red: { a: 1, b: 0, g: 0, r: 1 }, black: { a: 1, b: 0, g: 0, r: 0 }, }, } here skin.atlas file:
skin.png format: rgba8888 filter: nearest,nearest repeat: none logo rotate: false xy: 1, 1 size: 384, 93 orig: 384, 93 offset: 0, 0 index: -1 rotate: false xy: 387, 30 size: 65, 64 orig: 65, 64 offset: 0, 0 index: -1 musicoff rotate: false xy: 454, 30 size: 65, 64 orig: 65, 64 offset: 0, 0 index: -1 musicon rotate: false xy: 521, 30 size: 65, 64 orig: 65, 64 offset: 0, 0 index: -1 exit rotate: false xy: 588, 30 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 settings rotate: false xy: 654, 30 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 screenwrapper class:
package screens; import com.badlogic.gdx.screen; import com.badlogic.gdx.graphics.orthographiccamera; import com.badlogic.gdx.utils.viewport.stretchviewport; import engine.values; import com.badlogic.gdx.scenes.scene2d.stage; public abstract class screenwrapper extends stage implements screen{ protected screenmanager manager; public screenwrapper(screenmanager manager) { super( new stretchviewport(values.width, values.height, new orthographiccamera())); this.manager = manager; } // actors added here public abstract void initiate(); public abstract void buildstage(); @override public void show() { } @override public void render(float delta) { act(); draw(); } @override public void resize(int width, int height) { setviewport(new stretchviewport(values.width, values.height)); } @override public void pause() { } @override public void resume() { } @override public void hide() { } } and here main file:
package screens; import com.badlogic.gdx.gdx; import com.badlogic.gdx.graphics.gl20; import com.badlogic.gdx.scenes.scene2d.ui.image; import com.badlogic.gdx.scenes.scene2d.ui.skin; import engine.values; public class menuscreen extends screenwrapper{ private screenrenderer renderer; public menuscreen(screenmanager manager) { super(manager); renderer = new screenrenderer(); } @override public void initiate() { manager.getloader().load("skin.json", skin.class); } @override public void buildstage() { skin skin = manager.getloader().getasset("skin.json", skin.class); image logo = new image(skin.getdrawable("logo")); logo.setsize(values.logo_width, values.logo_height); logo.setorigin(logo.getx() + values.logo_width / 2, logo.gety() + values.logo_height / 2); logo.setposition(values.width / 2 - values.logo_width / 2, values.height); addactor(logo); gdx.app.log("x , y", "x : " + logo.getx() + ", y : "+logo.gety()); gdx.app.log("width , height", "width : " + logo.getwidth() + ", height : " + values.height); } @override public void render(float delta) { super.render(delta); gdx.gl.glclearcolor(242/255f, 242/255f, 242/255f, 0); gdx.gl.glclear(gl20.gl_color_buffer_bit); } } what doing wrong?
edit: ok narrowed down problem json file. looks i'm not declaring logo element correctly. how declare image elements in json?
edit 2: tried changing json file this:
{ com.badlogic.gdx.scenes.scene2d.ui.imagebutton$imagebuttonstyle: { logo: { imageup: logo, imagedown: logo } }, com.badlogic.gdx.graphics.color: { green: { a: 1, b: 0, g: 1, r: 0 }, white: { a: 1, b: 1, g: 1, r: 1 }, red: { a: 1, b: 0, g: 0, r: 1 }, black: { a: 1, b: 0, g: 0, r: 0 }, }, } but still doesn't work...
edit 3: tried load .png file of logo logo actor texture object still doesn't draw anything. did this: pastebin.com/n6ib2ymd
solution: ok figured out. turns out values.logo_width , values.logo_height 0 size of image set 0...
is menuscreen stage? it's not clear code. if yes, need add calls act , draw methods in render method:
@override public void render(float delta) { super.render(delta); gdx.gl.glclearcolor(242/255f, 242/255f, 242/255f, 0); gdx.gl.glclear(gl20.gl_color_buffer_bit); act(); draw(); } these methods draw actors added stage.
Comments
Post a Comment