2013-10-17 2 views
-2

libGDX를 사용하고 있는데 분할 방법에 큰 문제가 있습니다. 저는 지금 게임을 시작하기 전에 플레이어가 2 가지 스킬을 선택할 수있는 스킬 시스템을 연구 중입니다. 선택한 2 가지 스킬이 버튼으로 표시됩니다.split ("\.")을 사용하면 내 안드로이드 애플 리케이션 (libGDX)이 손상됩니다.

AbstractTextureButton.java

protected void initButton(Skin skin) { 
    texture = new Texture(Gdx.files.internal(getTexturePath())); //line 49 
    TextureRegion textureRegion = new TextureRegion(texture); 
    button = new Button(new Image(textureRegion), skin, "default"); 
    button.setBounds(getXPos(), getYPos(), button.getWidth(), button.getHeight()); 
    button.addListener(getInputListener()); 
} 

Skill2Button.java

을 :

그래서 여기 내 안드로이드 응용 프로그램의 코드에 도달 할 경우 데스크톱 버전을 위해 잘 작동하지만 충돌이 내 코드입니다

@Override 
protected String getTexturePath() { 
    //this string for e.g. is com.blub.skills.Slowmotion or com.blub.skills.Burst 
    String selectedSkill = SkillManager.getInstance().getSelectedSkillName2(); 

    //split it at the . 
    String[] splitResult = selectedSkill.split("\\."); // --> CRASH!* 

    //get the last element in my string 
    String skillName = splitResult[splitResult.length - 1]; 

    //return texturepath for the selected skill 
    return "graphics/skills/skill_" + skillName + ".png"; 
} 

lastIndexOf()를 사용하는 경우에도 동일한 충돌이 발생합니다. 분할의 ead().

로그 캣 로그 :

10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.buttons.AbstractTextureButton.initButton(AbstractTextureButton.java:49) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.buttons.AbstractBaseButton.<init>(AbstractBaseButton.java:33) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.buttons.AbstractTextureButton.<init>(AbstractTextureButton.java:31) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.buttons.Skill2Button.<init>(Skill2Button.java:29) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.screens.GameScreen.create(GameScreen.java:143) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.screens.GameScreen.resume(GameScreen.java:347) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.Hoernchenattack.setCurrentScreen(Hoernchenattack.java:104) 
10-17 12:20:05.631: E/AndroidRuntime(32132): at com.deinemudda.hoernchenattack.core.ui.buttons.LevelButton$1.touchUp(LevelButton.java:50) 
10-17 12:20:05.641: E/EmbeddedLogger(593): App crashed! Process: com.deinemudda.hoernchenattack.android 
10-17 12:20:05.641: E/EmbeddedLogger(593): App crashed! Package: com.deinemudda.hoernchenattack.android v1 (1.0) 

문제가 무엇입니까? 데스크톱 응용 프로그램에 완벽하게 작동합니다 ... '\.'을 사용하려고했습니다. 대신에 "\." 나는 Pattern.quote (".")도 사용하려고 노력했다. 나는 libGDX의 버전 0.9.9 안드로이드 버전을 사용하고 나는 문제는 대소 문자 구분했다 ... 것을 증명, 2.1.2 나는이 문제를 해결

+2

'selectedSkill'이 null인지 확인하십시오. – JNL

+0

Logcat 출력에서 ​​유용한 정보가 누락되었습니다. 특히 예외가 throw됩니다. 다른 의견에서와 같이 null 포인터 예외 일 가능성이 큽니다. –

+0

문자열에 확실히 필요한 것을 포함하도록 여분의'if (selectedSkill.contains ("XYZ")) {}'를 추가합니다. –

답변

0

... selectedSkill가 null이 아니었다이다. appName은 skillName이 "Slowmotion"이기 때문에 추락되었지만 .png의 이름은 skill_slowmotion.png였습니다. 그래서 그것은 데스크톱 응용 프로그램에서 잘 작동하지만 안드로이드에서 충돌합니다.