본문 바로가기

NDS

이미지 Fade In/Out

출처 : http://www.beodeulsoft.com/tt/38 New window

버들님 소스 참고하다가 이미지 Fade in/out 시키는 방법에 감격...
스트라이프로 뻘짓하던게 간단하게 처리된다...;

함수로 따로 빼 보았다.

// 적당한 곳에 설정
enum FadeType {
		NORMAL, BLACK, WHITE,
		BLACK_FADEIN, BLACK_FADEOUT,
		WHITE_FADEIN, WHITE_FADEOUT
	};


// Fade in/out
void Fade(FadeType fade) {

	s8 i;
	switch(fade) {
		case 0:	// NORMAL
			PA_SetBrightness(0, 0);
			PA_SetBrightness(1, 0);
			break;
		case 1:	// BLACK
			PA_SetBrightness(0, -31);
			PA_SetBrightness(1, -31);
			break;
		case 2:	// WHITE
			PA_SetBrightness(0, 31);
			PA_SetBrightness(1, 31);
			break;
		case 3: // BLACK_FADEIN
			for(i = -31; i <= 0; i++){
				PA_SetBrightness(0, i); 
				PA_SetBrightness(1, i); 
				PA_WaitForVBL();
			} break;
		case 4:	// BLACK_FADEOUT
			for(i = 0; i > -32; i--){
				PA_SetBrightness(0, i); 
				PA_SetBrightness(1, i); 
				PA_WaitForVBL();
			} break;
		case 5:	// WHITE_FADEIN
			for(i = 31; i >= 0; i--){
				PA_SetBrightness(0, i); 
				PA_SetBrightness(1, i); 
				PA_WaitForVBL();
			} break;
		case 6:	// WHITE_FADEOUT
			for(i = 0; i < 32; i++){
				PA_SetBrightness(0, i); 
				PA_SetBrightness(1, i); 
				PA_WaitForVBL();
			} break;
	}
}


사용 방법

// 우선 Black으로 변경한다.
Fade(BLACK);

// 이미지를 불러온다. 어둡게 채워놨기때문에 보이진 않는다.
PA_EasyBgLoad(1, 2, bg1);
PA_EasyBgLoad(0, 2, bg0);

// 밝기를 점차 올려 정상으로 돌려놓는다.
Fade(BLACK_FADEIN);

// 일정시간 대기로 이미지를 보여준다.
Pause(3000);

// 밝기를 점차 올려 흰색으로 채운다.
Fade(WHITE_FADEOUT);
		

설정은 위아래 동시에 적용된다. 따로 적용하려면 소스를 수정해야한다.