2012-01-22 5 views
0

나는 XNA를 배우려고 시도하는 자습서 인 this을 따르고 있지만 이미지를 부드럽게 스크롤하는 데 문제가 있습니다. 내 첫 이미지가 다시 돌아와서 스크롤 루프를 다시 시작할 때까지 모든 것이 잘 작동합니다.스크롤링 배경이 부드럽 지 않음

이상한 점은 몇 초 정도 걸리는 이미지를 그리는 것과 같이 보이고 계속 스크롤하면 계속 볼 수있는 위치로 이동한다는 것입니다. 배경을 빨간색으로 변경하여 이미지가 어떤 이유로로드되지 않았는지 확인하지만 배경 스프라이트 텍스처에 사용 된 것과 동일한 파란색의 연속적인 스트림을 얻습니다.

제안 사항? 다음은 업데이트 메소드의 코드입니다.

protected override void Update(GameTime gameTime) 
    { 
     // Allows the game to exit 
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
      this.Exit(); 

     // TODO: Add your update logic here 
     if (bg1.getPosition().X < -bg1.size.Width) 
     { 
      bg1.setPosition(new Vector2(bg5.getPosition().X + bg5.size.Width,0)); 
     } 
     if (bg2.getPosition().X < -bg2.size.Width) 
     { 
      bg2.setPosition(new Vector2(bg1.getPosition().X + bg1.size.Width, 0)); 
     } 
     if (bg3.getPosition().X < -bg3.size.Width) 
     { 
      bg3.setPosition(new Vector2(bg2.getPosition().X + bg2.size.Width, 0)); 
     } 
     if (bg4.getPosition().X < -bg4.size.Width) 
     { 
      bg4.setPosition(new Vector2(bg3.getPosition().X + bg3.size.Width, 0)); 
     } 
     if (bg5.getPosition().X < -bg5.size.Width) 
     { 
      bg5.setPosition(new Vector2(bg4.getPosition().X + bg4.size.Width, 0)); 
     } 

     Vector2 direction = new Vector2(-1,0); 
     Vector2 speed = new Vector2(100.0f/1000.0f,0.0f); 

     bg1.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg2.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg3.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg4.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg5.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 

     base.Update(gameTime); 
    } 

답변

1

if 문을 보면 어느 시점에서 중단됩니다.

모든 이미지를 왼쪽으로 이동합니다. 그런 다음 폭에 도달하면 다른 이미지의 위치를 ​​기반으로 재설정됩니다.이 위치는 왼쪽으로 이동합니다.

이 논리에는 결함이 있으므로 수정해야합니다.

관련 문제