스위치 문과 타이머 문을 사용해서 한 코드인데 오류는 없는데 세번째 핸들러 부분이 작동을 안하고 두번째 핸들러 위치에 블록이 멈추네요 ㅠ for문이 잘못됬을까요?
LinearLayout gameview1, gameview2, gameview3, gameview4;
Button button01;
Button button02;
Button button03;
Button button04;
Button btn_menu;
ImageView block1;
ImageView block2;
ImageView block3;
ImageView block4;
CountDownTimer timer;
private int mnMilliSecond = 1000;
private int value = 0;
int mnExitDelay = 1;
int delay = mnExitDelay * mnMilliSecond;
MediaPlayer player; // mediaplayer 선언
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
gameview1 = (LinearLayout) findViewById(R.id.gameview1);
gameview2 = (LinearLayout) findViewById(R.id.gameview2);
gameview3 = (LinearLayout) findViewById(R.id.gameview3);
gameview4 = (LinearLayout) findViewById(R.id.gameview4);
button01 = (Button) findViewById(R.id.button01);
button02 = (Button) findViewById(R.id.button02);
button03 = (Button) findViewById(R.id.button03);
button04 = (Button) findViewById(R.id.button04);
block1 = (ImageView) findViewById(R.id.block1);
block2 = (ImageView) findViewById(R.id.block2);
block3 = (ImageView) findViewById(R.id.block3);
block4 = (ImageView) findViewById(R.id.block4);
button01.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(200);
}
});
button02.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(200);
}
});
button03.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(200);
}
});
button04.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(200);
}
});
player = MediaPlayer.create(this, R.raw.ngyo); // 음악재생 R.raw.에 있는
// ngyo파일을 불러온다(대문자로 재생시
// 안됨)
player.setVolume(0.8f, 0.8f); // 재생시 소리 크기설정
//첫번째 핸들러
Handler mHandler = new Handler(); // 핸들러에서 음악재생할때 5초의 딜레이를 주고 실행시킨다
mHandler.postDelayed(new Runnable() {
public void run() {
player.start();
block1.setVisibility(android.view.View.VISIBLE);
block2.setVisibility(android.view.View.VISIBLE);
block3.setVisibility(android.view.View.VISIBLE);
block4.setVisibility(android.view.View.VISIBLE);
block1.setY(block1.getY() + 10);
block3.setY(block3.getY() + 10);
}
}, 5000);
//두번째 핸들러
Handler nHandler = new Handler(); // 핸들러에서 음악재생할때 6초의 딜레이를 주고 실행시킨다
mHandler.postDelayed(new Runnable() {
public void run() {
block2.setVisibility(android.view.View.VISIBLE);
block4.setVisibility(android.view.View.VISIBLE);
block2.setY(block2.getY() + 10);
block4.setY(block4.getY() + 10);
}
}, 7000);
//3번째 핸들러
Handler bHandler = new Handler(); // 핸들러에서 음악재생할때 5초의 딜레이를 주고 실행시킨다
mHandler.postDelayed(new Runnable() {
public void run() {
for (int a = 0; a <= 3; a++) {
int i = (int) (Math.random() * 10);
i += 1;
switch (i) {
case 1:
timer = new CountDownTimer(delay, 1000) {
@Override
public void onFinish() {
block1.setY(block1.getY() + 10);
block2.setY(block2.getY() + 10);
}
@Override
public void onTick(long millisUntilFinished) {
value++;
Log.v("MyAutoExit", Integer.toString(value));
}
};
break;
case 2:
timer = new CountDownTimer(delay, 1000) {
@Override
public void onFinish() {
block1.setY(block1.getY() + 10);
block3.setY(block3.getY() + 10);
}
@Override
public void onTick(long millisUntilFinished) {
value++;
Log.v("MyAutoExit", Integer.toString(value));
}
};
break;
case 3:
timer = new CountDownTimer(delay, 1000) {
@Override
public void onFinish() {
block1.setY(block1.getY() + 10);
block4.setY(block4.getY() + 10);
}
@Override
public void onTick(long millisUntilFinished) {
value++;
Log.v("MyAutoExit", Integer.toString(value));
}
};
break;
}
}
}
}, 9000);
대충 이런 코드인데 case1~10 까지 해서 돌려서 블록 이미지가 내려오는것을 만드는데 잘 안되네요 ㅠㅠ 혹시 어느 부분이 잘못됬는지 알려주실수 있나요?