앱 만들기/게임

배경화면 자동 스크롤 기능 만들기.

나도 처음이야 2020. 6. 2.

하기 처럼 배경 화면을 스크롤 하기위해서는

여러장의 이미지가 필요하다. 여기선 반복된 2장의 이미지를 활용하여 무한으로 스크롤 되는 배경화면을 만들어 보자.

 

//배경 순서
int bg_order = 1;
// 1번 배경 Y 축 이미지 좌표
private int
bgImage1_y_pos =  0;
// 2번 배경 Y축 이미지 좌표
private int
bgImage2_y_pos =  0;
// 배경의 스크롤 속도
private int
bgScroll_speed = 2;
// 스크린 화면 크기.
private int _width, _height ; 

private void scrollBgImage(Canvas canvas)
{
 
        if(bg_order == 2){       
            // bg2
먼저 그리고 -> bg1 뒤에 따라옴
           
canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos , null);
            // 1번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요.
           
canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos - _height, null);
       
}else{
            // bg1
먼저그리고 -> bg2 뒤에 따라옴
           
canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos, null);
           // 2번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요. 
           canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos - _height, null);
       
}
        // Y 축 포지션을 일정하게 이동시키면 화면이 스크롤 된다.
        // 즉, scrollBgImage() 는 쓰레드에 의해서 지속적을 호출 되기에...
       
bgImage1_y_pos += mScreenConfig.getY(bgScroll_speed);
       
bgImage2_y_pos += mScreenConfig.getY(bgScroll_speed);;

        // 1번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록.  
        if
(bg_order == 1 && bgImage1_y_pos == _height && bgImage2_y_pos - _height == 0) {
         
  bg_order = 2;
           
bgImage2_y_pos = 0;
           
bgImage1_y_pos = 0;
       
}
 
        // 2번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록.  

       
if(bg_order == 2 && bgImage2_y_pos == _height && bgImage1_y_pos - _height == 0) {
         

           
bg_order = 1;
           
bgImage2_y_pos = 0;
           
bgImage1_y_pos = 0;
       
}

   
}

 

즉, 쓰레드에서 위 함수를 무한 반복으로 호출하게되면

배경 1, 2가 연속적으로 무한으로 그려지기에, 스크롤 효과를 구현 할 수 있다.

감사합니다 :)

반응형

'앱 만들기 > 게임' 카테고리의 다른 글

1942 독도 제작영상 - 6편  (8) 2020.06.12
1942 독도 제작영상 - 5편  (4) 2020.06.02
1942 독도 - 제작 영상 4편  (2) 2020.05.30
1942 독도 제작과정 -3편  (8) 2020.05.23
유니티 - 종료 팝업창 만들기  (4) 2019.08.26

댓글