안녕하세요 바야바 게임엔진을 처음 사용하는 사람입니다.
해당 엔진을 사용해 보고 싶은 마음에
http://blog.naver.com/gksthf7051/220153844413
위 블로그를 보고 로고를 출력하는 코드를 작성하고 있었는데, 아래같은 에러가 납니다.
정말 도대체 왜 이러한 오류가 나는건지 정말 모르겠습니다... ㅠㅠ
바야바 엔진을 사용하셨던 분이나 해당 오류가 왜 나는지 알 수 있으신 분은 답변해주시면 감사하겠습니다!
===============에러====================
07-02 01:04:11.008: E/dalvikvm-heap(17999): Out of memory on a -917957272-byte allocation.
07-02 01:04:11.008: E/AndroidRuntime(17999): FATAL EXCEPTION: GLThread 1463
07-02 01:04:11.008: E/AndroidRuntime(17999): Process: bayaba.game.basic, PID: 17999
07-02 01:04:11.008: E/AndroidRuntime(17999): java.lang.OutOfMemoryError
07-02 01:04:11.008: E/AndroidRuntime(17999): at bayaba.engine.lib.Sprite.LoadSprite(Sprite.java:550)
07-02 01:04:11.008: E/AndroidRuntime(17999): at bayaba.game.basic.GameMain.LoadGameData(GameMain.java:32)
07-02 01:04:11.008: E/AndroidRuntime(17999): at bayaba.game.basic.SurfaceClass.onSurfaceCreated(SurfaceClass.java:27)
07-02 01:04:11.008: E/AndroidRuntime(17999): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1501)
07-02 01:04:11.008: E/AndroidRuntime(17999): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
07-02 01:04:23.791: E/dalvikvm-heap(18394): Out of memory on a -917957272-byte allocation.
07-02 01:04:23.791: E/AndroidRuntime(18394): FATAL EXCEPTION: GLThread 1493
07-02 01:04:23.791: E/AndroidRuntime(18394): Process: bayaba.game.basic, PID: 18394
07-02 01:04:23.791: E/AndroidRuntime(18394): java.lang.OutOfMemoryError
07-02 01:04:23.791: E/AndroidRuntime(18394): at bayaba.engine.lib.Sprite.LoadSprite(Sprite.java:550)
07-02 01:04:23.791: E/AndroidRuntime(18394): at bayaba.game.basic.GameMain.LoadGameData(GameMain.java:32)
07-02 01:04:23.791: E/AndroidRuntime(18394): at bayaba.game.basic.SurfaceClass.onSurfaceCreated(SurfaceClass.java:27)
07-02 01:04:23.791: E/AndroidRuntime(18394): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1501)
07-02 01:04:23.791: E/AndroidRuntime(18394): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
=============================소스코드=====================================
package bayaba.game.basic;
import java.util.Random;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import bayaba.engine.lib.GameInfo;
import bayaba.engine.lib.GameObject;
import bayaba.engine.lib.Sprite;
public class GameMain {
public GL10 mGL = null; // OpenGL 객체
public Context MainContext;
public Random MyRand = new Random(); // 랜덤 발생기
public GameInfo gInfo; // 게임 환경 설정용 클래스 : MainActivity에 선언된 것을 전달 받는다.
public float TouchX, TouchY;
private Sprite logoSpr = new Sprite();
private GameObject logoObj = new GameObject();
public int GameMode;
public GameMain(Context context, GameInfo info) // 클래스 생성자 (메인 액티비티에서 호출)
{
MainContext = context; // 메인 컨텍스트를 변수에 보관한다.
gInfo = info; // 메인 액티비티에서 생성된 클래스를 가져온다.
}
public void LoadGameData() // SurfaceClass에서 OpenGL이 초기화되면 최초로 호출되는 함수
{
// 게임 데이터를 로드합니다.
logoSpr.LoadSprite(mGL, MainContext, "logo.spr"); // 이 부분에서 에러가 남.
logoObj.SetObject(logoSpr, 0, 0, 240, 400, 0, 0);
logoObj.trans = 0.0f;
logoObj.scroll = false;
GameMode = 0;
}
public void PushButton(boolean push) // OpenGL 화면에 터치가 발생하면 GLView에서 호출된다.
{
// 터치를 처리합니다.
}
public void DoGame() // 1/60초에 한번씩 SurfaceClass에서 호출된다. 게임의 코어 부분을 넣는다.
{
synchronized (mGL) {
// 게임의 코어 부분을 코딩합니다.
if (GameMode == 0) {
if (logoObj.move == 0) {
logoObj.trans += 0.033f;
if (logoObj.trans >= 1) {
logoObj.trans = 1;
logoObj.move = 1;
logoObj.atimer = System.currentTimeMillis();
// Music.start();
}
} else if (logoObj.move == 1) {
if (System.currentTimeMillis() - logoObj.atimer >= 2000) {
logoObj.move = 2;
}
} else if (logoObj.move == 2) {
logoObj.trans -= 0.033f;
}
if (logoObj.trans <= 0) {
LoadGameData();
}
} else if (GameMode == 1) {
}
if (GameMode == 0) {
logoObj.DrawSprite(gInfo);
} else if (GameMode == 1) {
}
}
}
}
==================================================================