2013-11-21 1 views
2

잠시 후 검은 색 사각형으로 설정 I안드로이드 libgdx 비트 맵 글꼴은 내가 자산/글꼴/arial.ttf 이있는 트루 타입 글꼴에서 BitmapFont</strong><strong>을 생성하기 위해 안드로이드에 <strong>GDX-FreeType에서</strong> 라이브러리를 사용하고있어 방법은

generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/arial.ttf")); 
font30 = generator.generateFont(60 , "ConectigTsrv" , false); 
generator.dispose();  
Label l = new Label("Connecting to server...", new LabelStyle(font30 , Color.BLUE)); 
l.setX(400 - l.getWidth()/2f); 
l.setY(480 - l.getHeight() - 10); 
stage.addActor(l); 

텍스트가 화면에 인쇄됩니다 화면에 텍스트를 표시하는 데 사용 매우 잘

enter image description here

나는 다시 응용 프로그램에 온 후 홈 버튼을 누르고 그러나 잠시 후 또는 모든 문자가 검은 색 사각형 세드릭에 대한

enter image description here

어떤 생각을 차례?

+1

버튼 중 하나를 누르면 정확히 무슨 일이 발생하는지 디버그 할 것입니다. –

+1

비트 맵의 ​​오류라고 생각합니다. –

답변

4

FreeTypeFontGenerator로 만든 텍스처가 최근 commit까지 관리되지 않는 것이 문제입니다. 텍스처가 관리되지 않는다는 사실은 설명 된 것과 같은 시나리오에서 발생하는 OpenGL 컨텍스트가 손실되면 다시로드해야한다는 것을 의미합니다.

libgdx를 latest nightlies으로 업그레이드하면 문제가 해결 될 것입니다.

자세한 내용은 this article에서 관리되지 않는 텍스처의 문제점을 잘 설명합니다.

+0

yesssss 지난 밤에 빌드를 사용했고 모든 것이 좋습니다. 나는 당신이 언급 한 기사를 읽었습니다.하지만 감사합니다. 내가 사용하고있는 버전은 0.9.9입니다.이 버전 이후에는 완료되지 않았습니까? –

1

누구나이 문제가 계속되는 경우. LibGDX 1.9.2를 사용하여 다음과 같은 문제도 발생했습니다. 게임을 실행하고 Android 홈 화면으로 돌아가서 게임으로 돌아가서 글꼴이 검은 색 직사각형이됩니다.

는 난 단지 결코 다시 게임을 시작하고 한 번에로드 정적 방법으로, 모든 텍스처를로드하는 정보가있다 : 게임이 메모리에 다시로드 할 때

//THIS IS WRONG 
public class Styles { 
    public static final BitmapFont HEADER_FONT; 
    public static final FreeTypeFontGenerator _freeTypeFontGenerator = ... 

    static { 
     FreeTypeFontGenerator.FreeTypeFontParameter params = ... 
     HEADER_FONT = freeTypeFontGenerator.generateFont(params); 
    } 
} 

이 문제가 발생합니다. 내가 아는 한, 최종 필드는 존재하지 않는 텍스처 데이터를 참조합니다.

public void onCreate() { 
    Styles.loadAssets(); 
} 

및 스타일 :

//STATIC RESOURCES CAN CAUSE TROUBLE, KEEP IT IN MIND 
public class Styles { 
    public static BitmapFont HEADER_FONT; 
    public static FreeTypeFontGenerator FONT_GENERATOR = ... 

    public static void loadAssets() { 
     FreeTypeFontGenerator.FreeTypeFontParameter params = ... 
     HEADER_FONT = FONT_GENERATOR.generateFont(params); 
    } 
} 
이 문제를 해결하려면, 나는 모든 자산 게임이 메모리에 다시로드 할 때마다 다시 최종 속성을 제거하고 생성() 함수에서 그들을로드있어

나는 메모리 친화적 인 읽기 전용 자산을 정적으로 선호합니다. 그러나 정적 리소스를 사용하면 per the manual과 같이 내가 모르는 문제가 발생할 수 있습니다.

+0

이것은 내 문제였습니다. 고마워요! –