안드로이드 개발 질문/답변
(글 수 45,052)
Cocos2d 기반으로 프로그램을 짜고 있습니다.
Sprite에 SDcard에 있는 이미지를 호출 하기 위해서 Bitmap 객체를 생성해서 넣어 주고있습니다.
이렇게 생성하게 되니까 메모리에 대한 이슈가 발생 하였습니다.
어떻게 화면 메모리 이슈가 안나올런지요.. 도움 부탁드립니다.
Sprite에 Bitmap을 만들어 넣는 구문
CCSprite temp_Img = CCSprite.sprite(BitmapFactory.decodeFile("path"),path);OurofMemory 나오는 Log
O 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): FATAL EXCEPTION: GLThread 10 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): java.lang.OutOfMemoryError 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at android.graphics.Bitmap.nativeCreate(Native Method) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at android.graphics.Bitmap.createBitmap(Bitmap.java:551) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at android.graphics.Bitmap.createBitmap(Bitmap.java:531) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.opengl.CCTexture2D.initWithImage(CCTexture2D.java:216) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCTextureCache$1.load(CCTextureCache.java:111) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.opengl.CCTexture2D.checkName(CCTexture2D.java:179) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCSprite.draw(CCSprite.java:892) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:689) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:695) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:695) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.transitions.CCTransitionScene.draw(CCTransitionScene.java:76) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:689) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.transitions.CCTransitionScene.draw(CCTransitionScene.java:75) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:689) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.transitions.CCTransitionScene.draw(CCTransitionScene.java:75) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:689) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.transitions.CCTransitionScene.draw(CCTransitionScene.java:75) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCNode.visit(CCNode.java:689) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCDirector.drawCCScene(CCDirector.java:713) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at org.cocos2d.nodes.CCDirector.onDrawFrame(CCDirector.java:663) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1425) 04-20 11:48:11.380: ERROR/AndroidRuntime(4649): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1180)
2011.04.20 14:10:16
저도 cocos2d로 개발을 많이 해보았지만 저런 오류는 아직 겪지 못했네요..
차이가 있다면 저는 비트맵 변수를 따로 만들고 이미지를 불러온 후, 리사이즈를 해서 스프라이트에 넣습니다.
cocos2d가 원체 게임 제작용도이기때문에, 일반적인 파일에서 불러오기 같은 것은 잘 안될 수도 있습니다.
비트맵을 스프라이트에 넣게 되면 deprecation을 유발하는데요, 일단 사용하는데 지장은 없습니다.
2011.04.20 15:49:21
그림의 크기가 짝수*짝수인지 확인해보세요. 그림 크기가 너무 커도 오류나기도 하니 확인해보세요. 전 andengine 사용하는데, 옆의 문제로 문제가 생깁니다.




난데없이 질문 들어갑니다만.....안드로이드용 코코스는 자바 언어가 아니지요? 리눅스 우분투던가 기반에서 C언어를 쓴다던거 같은데....어떻게 개발하고 계신가요?