추가로 문의 사항이나, 궁금한 점이 계시면 연락주세요.
(joonryang@gmail.com)
※ 도움이 되셨다면, ^^. 맨 위 광고클릭 좀..ㅎㅎ
1. 'Rokon library' 다운로드
: http://code.google.com/p/rokon/downloads/list
위의 사이트에는 "Rokon library" 및 "Rokon library Source Code" 등이 있습니다.
2. 'Rokon library' Eclipse Porject에 추가
3. 'Rokon library' Framework 및 설명
1) 구조
2) 'Rokon library' Framework에 대한 보충 문서
: http://coscup.org/2010/slides/15_3_1300_android_game_engine.pdf
4. Sample Code.
1) 'Image Load' 방법
1) 'Image Load' 방법
- "Image_Load_Activity.java"
public class Image_Load_Activity extends RokonActivity {
public static final float GAME_WIDTH = 480f;public class Image_Load_Activity extends RokonActivity {
public static final float GAME_HEIGHT = 320f;
private GameScence scene;
public void onCreate() {
debugMode();
forceFullscreen();
forceLandscape();
setGameSize(GAME_WIDTH, GAME_HEIGHT);
setDrawPriority(DrawPriority.PRIORITY_VBO);
setGraphicsPath("textures/");
createEngine();
} // End of onCreate
public void onLoadComplete() {
Textures.load();
setScene(scene = new GameScence());
} // End of onLoadComplete
}
- "GameScence.java"
public class GameScence extends Scene {
private FixedBackground background;
public GameScence() {
super();
setBackground(background = new FixedBackground(Textures.background));
} // End of GameScence
@Override
public void onGameLoop() {
} // End of onGameLoop
@Override
public void onPause() {
} // End of onPause
@Override
public void onResume() {
} // End of onResume
@Override
public void onReady() {
} // End of onReady
}
- "Textures.java"
public class Textures {
public static TextureAtlas atlas;
public static Texture background;
public static void load() {
atlas = new TextureAtlas();
atlas.insert(background = new Texture("background.png"));
atlas.complete();
} // End of load
}
2) 'Image'를 화면에 보여주는 방법
- "Add_Image_Activity.java"
public class Add_Image_Activity extends RokonActivity {
public static final float GAME_WIDTH = 480f;
public static final float GAME_HEIGHT = 320f;
private GameScence1 scene;
public void onCreate() {
debugMode();
forceFullscreen();
forceLandscape();
setGameSize(GAME_WIDTH, GAME_HEIGHT);
setDrawPriority(DrawPriority.PRIORITY_VBO);
setGraphicsPath("textures/");
createEngine();
} // End of onCreate
public void onLoadComplete() {
Textures1.load();
setScene(scene = new GameScence1());
} // End of onLoadComplete
}
- "GameScence1.java"
public class GameScence1 extends Scene {
private FixedBackground background;
private Sprite bob, bob2, bob3;
public GameScence1() {
// 이것은 3개의 요정을 1 계층에 사용하는것을 의미 합니다.
super(1,3);
setBackground(background = new FixedBackground(Textures1.background));
// Create the Bob sprites.
// 한 장면에 3개의 요정을 추가하도록 합니다. (이름을 밥 이라고 하기로 했어요)
// 첫번째와 두번째 파라미터는 요정의 x,y 위치를, 3번째와 4번째는 크기를 나타냅니다
bob = new Sprite(100, 220, Textures1.bob.getWidth(), Textures1.bob.getHeight());
bob.setTexture(Textures1.bob);
bob2 = new Sprite(100, 180, Textures1.bob.getWidth(), Textures1.bob.getHeight());
bob2.setTexture(Textures1.bob);
bob3 = new Sprite(100, 260, Textures1.bob.getWidth(), Textures1.bob.getHeight());
bob3.setTexture(Textures1.bob);
// Add the Bob sprites to the first layer.
// 장면에 위의 것들을 추가합니다
add(0, bob);
add(0, bob2);
add(0, bob3);
} // End of GameScence
@Override
public void onGameLoop() {
} // End of onGameLoop
@Override
public void onPause() {
} // End of onPause
@Override
public void onResume() {
} // End of onResume
@Override
public void onReady() {
// x 450, y100 로 5000ms/5 초 동안 움직입니다.
bob3.moveTo(450, 100, 5000);
bob.moveTo(450, 100, 4000);
bob2.moveTo(450, 100, 3000);
} // End of onReady
}
- "Textures1.java"
public class Textures1 {
public static TextureAtlas atlas1;
public static Texture background, bob;
public static void load() {
atlas1 = new TextureAtlas();
atlas1.insert(background = new Texture("background1.png"));
atlas1.insert(bob = new Texture("android.png"));
atlas1.complete();
} // End of load
}
3) 'Image'를 "Touch Move" 하는 방법
- "Touch_Image_Activity.java"
public class Touch_Image_Activity extends RokonActivity {
public static final float GAME_WIDTH = 480f;
public static final float GAME_HEIGHT = 320f;
private GameScence2 scene;
public void onCreate() {
debugMode();
forceFullscreen();
forceLandscape();
setGameSize(GAME_WIDTH, GAME_HEIGHT);
setDrawPriority(DrawPriority.PRIORITY_VBO);
setGraphicsPath("textures/");
createEngine();
} // End of onCreate
public void onLoadComplete() {
Textures2.load();
setScene(scene = new GameScence2());
} // End of onLoadComplete
}
- "GameScence2.java"
public class GameScence2 extends Scene {
private FixedBackground background;
private Sprite bob;
public GameScence2() {
// 이것은 3개의 요정을 1 계층에 사용하는것을 의미 합니다.
super(1,1);
setBackground(background = new FixedBackground(Textures2.background));
// Create the Bob sprites.
// 한 장면에 3개의 요정을 추가하도록 합니다. (이름을 밥 이라고 하기로 했어요)
// 첫번째와 두번째 파라미터는 요정의 x,y 위치를, 3번째와 4번째는 크기를 나타냅니다
bob = new Sprite(100, 220, Textures2.bob.getWidth(), Textures2.bob.getHeight());
bob.setTexture(Textures2.bob);
// Add the Bob sprites to the first layer.
// 장면에 위의 것들을 추가합니다
add(0, bob);
} // End of GameScence2
@Override
public void onGameLoop() {
} // End of onGameLoop
@Override
public void onPause() {
} // End of onPause
@Override
public void onResume() {
} // End of onResume
@Override
public void onReady() {
} // End of onReady
// 'pointerCount' 는 사용자가 일반적으로 누른 상태의 손가락의 측정값
public void onTouchDown(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// This is called when you press down on the screen.
}
//'pointerCount' 는 사용자가 일반적으로 누른 상태의 손가락의 측정값
public void onTouchMove(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// This is called when you move your finger over the screen.
//(ie pretty much every frame if your holding your finger down)
// Here we'll just make Bob follow your finger.
bob.x = x - (Textures2.bob.getWidth() / 2);
bob.y = y - (Textures2.bob.getHeight() / 2);
}
// 'pointerCount' 는 사용자가 일반적으로 누른 상태의 손가락의 측정값
public void onTouchUp(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// And this is called when you stop pressing.
}
}
- "Textures2.java"
public class Textures2 {
public static TextureAtlas atlas1;
public static Texture background, bob;
public static void load() {
atlas1 = new TextureAtlas();
atlas1.insert(background = new Texture("background1.png"));
atlas1.insert(bob = new Texture("android.png"));
atlas1.complete();
} // End of load
}
4) 'Image'를 "Touch"에 따라 변경 하는 방법
- "Modifiers_Use_Activity.java"
public class Modifiers_Use_Activity extends RokonActivity {
public static final float GAME_WIDTH = 480f;
public static final float GAME_HEIGHT = 320f;
private GameScence3 scene;
public void onCreate() {
debugMode();
forceFullscreen();
forceLandscape();
setGameSize(GAME_WIDTH, GAME_HEIGHT);
setDrawPriority(DrawPriority.PRIORITY_VBO);
setGraphicsPath("textures/");
createEngine();
} // End of onCreate
public void onLoadComplete() {
Textures3.load();
setScene(scene = new GameScence3());
} // End of onLoadComplete
}
- "GameScence3.java"
public class GameScence3 extends Scene {
private FixedBackground background;
private Sprite bob;
private ColorModifier modifier;
public GameScence3() {
// 이것은 3개의 요정을 1 계층에 사용하는것을 의미 합니다.
super(1,3);
setBackground(background = new FixedBackground(Textures3.background));
// Create the Bob sprites.
// 한 장면에 3개의 요정을 추가하도록 합니다. (이름을 밥 이라고 하기로 했어요)
// 첫번째와 두번째 파라미터는 요정의 x,y 위치를, 3번째와 4번째는 크기를 나타냅니다
bob = new Sprite(100, 220, Textures3.bob.getWidth(), Textures3.bob.getHeight());
bob.setTexture(Textures3.bob);
// Add the Bob sprites to the first layer.
// 장면에 위의 것들을 추가합니다
add(0, bob);
// And create the modifier.
modifier = new ColorModifier();
} // End of GameScence
@Override
public void onGameLoop() {
} // End of onGameLoop
@Override
public void onPause() {
} // End of onPause
@Override
public void onResume() {
} // End of onResume
@Override
public void onReady() {
} // End of onReady
public void onTouchUp(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// Add your modifier to the sprite.
bob.addModifier(modifier);
}
}
- "Textures3.java"
public class Textures3 {
public static TextureAtlas atlas1;
public static Texture background, bob;
public static void load() {
atlas1 = new TextureAtlas();
atlas1.insert(background = new Texture("background1.png"));
atlas1.insert(bob = new Texture("android.png"));
atlas1.complete();
} // End of load
}
추가로 문의 사항이나, 궁금한 점이 계시면 연락주세요.
(joonryang@gmail.com)
※ 도움이 되셨다면, ^^. 맨 위 광고클릭 좀..ㅎㅎ
댓글 없음:
댓글 쓰기