2013-12-14 2 views
1

로드 막대처럼 작동해야하는 스프라이트가 있습니다. 나는 9patch-type (http://cdn.dibbus.com/wp-content/uploads/2011/03/btn_black.9.png)처럼 생성 된 예제 이미지를 사용하여 이것을 시도했다. 처음에는 괜찮은 것처럼 보이지만 스프라이트의 너비가 증가함에 따라 스프라이트가 픽셀 화되기 시작합니다. 문제가 무엇인지 아는 사람이나 해결책이 있습니까? 코드는 아래와 같습니다.setSize가 여러 번 호출 될 때 9patch가 픽셀 화됩니다.

public Sprite loaded; 

public void init() 
{ 
     atlas = new TextureAtlas(Gdx.files. 
       internal("data/misc/menu_button.pack")); 

     loaded = atlas.createSprite("loadbar"); 

     loaded.setPosition((Misc.WIDTH/2) - unloaded.getWidth()/2, 
      Misc.HEIGTH - unloaded.getHeight()); 
} 

public void draw_load_bar() //render function 
{ 
    if(loaded.getWidth() < 600) 
    { 
     loaded.setSize(loaded.getWidth()+ 0.5f, loaded.getHeight()); 
    } 

    loaded.draw(batch); 
} 

어떤 도움을 주셔서 감사합니다!

+0

libgdx의 스프라이트 대신 Ninepatch를 사용하십시오. 그러한 문제없이 작동해야합니다. https://github.com/libgdx/libgdx/wiki/Ninepatches – BennX

답변

4

스프레드를 사용하여 늘리지 마십시오. 나는 그것을위한 libgdx에서 진짜 Ninepatch를 추천하고 싶다.

public NinePatch loaded; 
private float posX, posY, width, height; 
    public void init() 
    { 
      loaded = new NinePatch(the Texture here,10, 10, 10, 10); //bounds outside 
    //set right pos here... 
    } 

    public void draw_load_bar(SpriteBatch batch) //render function 
    { 
     if(loaded.getWidth() < 600) 
     { 
      //update the size of it here (guess pos is static) 
      width++; 
     } 

    //need to parse the batch and the right sizes. 
     loaded.draw(batch, posx, posy, width, height); 
    } 

이후에는 스프라이트 나 텍스처처럼 처리 할 수 ​​있지만 문제없이 바로 스트래킹을 수행 할 수 있습니다. 전체 그림을 늘이기를 원한다면 단순히 그물을 만들 때 어떤 경계도 설정하지 마십시오. new NinePatch(texture, 0,0,0,0)

+0

감사합니다. 트릭을 수행하는 것 같습니다! :) – Araw

관련 문제