cocos2d-x로 게임을 만들고 디버깅을 하다가 이상한 에러를 만났습니다.
바로 Class lookup Ljava/lang/NullPointerException; attempted while exception Ljava/lang/NullPointerException; pending 와 VM aborting 에러였습니다.
cocos2d-x를 JNI로 빌드까지 제대로 성공하고 빌드까지 성공하였는데 런타임중에 이런 에러가 나오게 되었습니다.
아마 대충 위에처럼 에러가 쭉~ 뜨면서 죽을 것입니다.!!!!
해결책은 아주 간단하다..잘보면 sound 어쩌구가 나와서 SimpleAudioEngine을 찾아 보다가..
저 에러는 아이폰에서는 안나온다. 왜냐면 안드로이드 에서만 나오기 때문입니다.
안드로이드에서는 사운드파일을
SimpleAudioEngine::sharedEngine()->preloadEffect("snd_object.mp3");
해주어야 합니다.
그러므로
void MyClass::preloadEffects() {
SimpleAudioEngine::sharedEngine()->preloadEffect("snd_clothes_fit.mp3");
SimpleAudioEngine::sharedEngine()->preloadEffect("snd_clothes_item.mp3");
SimpleAudioEngine::sharedEngine()->preloadEffect("snd_bgm_clothes.mp3");
}
요렇게 필요한 사운드 파일을 미리 올려주는 함수를 만든다음
init() 함수안에
if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
{
this->preloadEffects();
}
저것을 써 넣어주면 된다. 안드로이드에서만 필요 하지만 머 어짜피 cocos2d-x는 멀티플래폼이니 그냥 무조건 써 넣어주어야 합니다.
그리고
void MyClass::unloadEffects()
{
SimpleAudioEngine::sharedEngine()->unloadEffect("snd_clothes_fit.mp3");
SimpleAudioEngine::sharedEngine()->unloadEffect("snd_clothes_item.mp3");
SimpleAudioEngine::sharedEngine()->unloadEffect("snd_bgm_clothes.mp3");
}
를 해서 preload한 사운드를 unload 해주고
이것은
onExit() 함수 안에 넣어준다.
끝..
저만 모르는 문제 였을지 모르지만..여러분도 저런 문제로 괜한 시간 허비 하지 않았으면합니다.
'알면 좋은 맥, 아이폰 정보' 카테고리의 다른 글
IOMEGA ez media & backup center A/S 받은 사연 [불량, 교환] (0) | 2013.06.28 |
---|---|
[야후] flickr(플리커), 야후 한국 이용자 가입 방법!!! (0) | 2013.05.22 |
[플리커] flickr(플리커) 서비스가 모든 유저에게 1TB(테라)를 지원합니다. (0) | 2013.05.22 |
[CP900] 캐논 포토프린터 SELPHY CP900 개봉기 및 사용기!!! (0) | 2013.05.16 |
댓글