Rokon tutorial 네번째 섹션에 오신것을 환영합니다.
이번 토튜리얼에서는 Rokon 프로젝트에서 생성하고 수정하는 배울것입니다.
자바 프로그래밍과 안드로이드 SDK 에 대해 경험이 있다고 가정합니다.
이클립스를 사용하여 진행하겠지만, 다른 툴을 쓴다고 해도 따라흐는것은 가능합니다.
이전 토튜리얼인 "Using Sprites"에 이어 진행하며, 그것을 이미 읽었으며, Rokon 프로젝트가 설정되어 있고,
모든 준비가 되었다고 가정합니다.
(마지막에는 토튜리얼의 소스를 다운받으실수 있습니다.)
수정하는 사람은 요정에게 일시적인 효과를 주게 클래스를 변경하고, 공격당하거나 기타 상황에서 빨간색으로
번쩍이게 됩니다.
'ColorModifier.java'라는 새로운 파일을 생성합니다.
개인적으로는 내가 수정하는 것들을 나누는것은 내 프로젝트를 지키는것이 좋다고 생각하지만, 완전히 개인적인
옵션입니다.
아래 코드를 복사하여 새로운 파일에 넣습니다.
package com.rokonexamples.modifier.modifiers;
import com.stickycoding.rokon.Modifier;
import com.stickycoding.rokon.Sprite;
public class ColorModifier extends Modifier {
private float color;
@Override
public void onStart(Sprite sprite) {
color = 0;
}
@Override
public void onUpdate(Sprite sprite) {
// Here you can do anything to the sprite, like move it or whatever.
// But we will just do a simple color modification.
sprite.setRGB(1, color, color);
color += 0.1;
// When the sprite's original colors has been restored, end it.
if (color >= 1)
end();
}
@Override
public void onEnd(Sprite sprite) { sprite.setRGB(1, 1, 1);
}
}
import com.stickycoding.rokon.Modifier;
import com.stickycoding.rokon.Sprite;
public class ColorModifier extends Modifier {
private float color;
@Override
public void onStart(Sprite sprite) {
color = 0;
}
@Override
public void onUpdate(Sprite sprite) {
// Here you can do anything to the sprite, like move it or whatever.
// But we will just do a simple color modification.
sprite.setRGB(1, color, color);
color += 0.1;
// When the sprite's original colors has been restored, end it.
if (color >= 1)
end();
}
@Override
public void onEnd(Sprite sprite) { sprite.setRGB(1, 1, 1);
}
}
이것은 modifier을 생성하는 방법을 보여줍니다.
'onStart()'는 modifier이 시작될때 불려집니다. 그래서 'reset'를 할수 있는 장소입니다.
'onUpdate()'는 modifier이 활성화 상태일때 모든 프레임에서 한번씩 불립니다.(시작을 하고 'end()'를 부르기
전까지 입니다.)
그러므로 요정을 '수정' 할 수 있는 장소입니다.
sprite.setRGB(1, color, color);
요정의 색상 설정이 가능하며, 만일 (1,1,1)로 설정한다면 보통으로 그려지고, (0,0,0)으로 설정되면 완전한 검은
색이 됩니다.
modifiers가 분명한것은 요정이 빨간색(1,0,0) 으로 될것이며, 일반적으로 짧은 시간동안입니다.
그리고 뒤에( color >= 0 )'end();' 를 부르게 되며, 요정으로 부터 스스로 제거하고, 'onEnd'를 부르게 됩니다.
sprite.setRGB(1,1,1);
일반적으로 뒤에 돌아오게 됩니다.
네, 요정에 이것을 추가합니다.
'GameScence' 클래스를 열고 아래 코드를 추가합니다.
package com.rokonexamples.modifier;
import android.view.MotionEvent;
import com.rokonexamples.modifier.modifiers.ColorModifier;
import com.stickycoding.rokon.Scene;
import com.stickycoding.rokon.Sprite;
import com.stickycoding.rokon.background.FixedBackground;
public class GameScene extends Scene {
private FixedBackground background;
private Sprite bob;
private ColorModifier modifier;
public GameScene() {
super(1, 1);
setBackground(background = new FixedBackground(Textures.background));
// Create the Bob sprite
bob = new Sprite(100, 220, Textures.bob.getWidth(), Textures.bob.getHeight());
bob.setTexture(Textures.bob);
// Add the Bob sprite to the first layer.
add(0, bob);
// And create the modifier.
modifier = new ColorModifier();
}
@Override
public void onGameLoop() {
}
@Override
public void onTouchUp(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// Add your modifier to the sprite.
bob.addModifier(modifier);
}
@Override
public void onPause() {
}
@Override
public void onResume() {
}
@Override
public void onReady() {
}
}
import android.view.MotionEvent;
import com.rokonexamples.modifier.modifiers.ColorModifier;
import com.stickycoding.rokon.Scene;
import com.stickycoding.rokon.Sprite;
import com.stickycoding.rokon.background.FixedBackground;
public class GameScene extends Scene {
private FixedBackground background;
private Sprite bob;
private ColorModifier modifier;
public GameScene() {
super(1, 1);
setBackground(background = new FixedBackground(Textures.background));
// Create the Bob sprite
bob = new Sprite(100, 220, Textures.bob.getWidth(), Textures.bob.getHeight());
bob.setTexture(Textures.bob);
// Add the Bob sprite to the first layer.
add(0, bob);
// And create the modifier.
modifier = new ColorModifier();
}
@Override
public void onGameLoop() {
}
@Override
public void onTouchUp(float x, float y, MotionEvent event, int pointerCount, int pointerId) {
// Add your modifier to the sprite.
bob.addModifier(modifier);
}
@Override
public void onPause() {
}
@Override
public void onResume() {
}
@Override
public void onReady() {
}
}
이제 이제 우리가 추가한 두 라인을 제외하고 같은 클래스입니다.
modifier = new ColorModifier();
그리고
bob.addModifier(modifier);
그리고
bob.addModifier(modifier);
이것은 하고자 하는것이 매우 분명합니다. 첫번째는 modifier을 생성하고 두번째를 추가하는것은 언제나 스크린을
터치할때마다 발생합니다.
그러나, 기억할만한 중요한것은 modifier 을 한번 생성하고, 계속 재 사용 했습니다.
매번 새로운 modifier을 생성하고 요정에게 더한다면 게임렉을 발생할 기회를 매우많이 가질것입니다.
네, 만일 실행하고 스크린을 누른다면, 밥은 빨같게 번쩍일 것입니다.
만일 모든것들을 정확하게 따라왔다면 다음처럼 보일것입니다.
네번째 Rocon 토튜리얼을 읽어주셔서 감사합니다.
원문 : http://www.rokonandroid.com/tutorials/41-beginner/66-using-modifiers
반응형
'Program > Android Java' 카테고리의 다른 글
[Android] 새로운 Activity 실행 시 애니메이션 효과능 (0) | 2011.04.21 |
---|---|
안드로이드 게임 만들기 (3) | 2011.04.15 |
안드로이드 게임 엔진 ROKON - Using Touch Input (0) | 2011.04.15 |
안드로이드 게임 엔진 ROKON - Using Sprites (0) | 2011.04.15 |
안드로이드 게임 엔진 ROKON - Hello World (0) | 2011.04.15 |