좋아, 그래서 나는 캔버스와 스레딩을 사용하는 안드로이드에서 간단한 게임을 작업 해왔다. (SurfaceView를 확장하고 Runnable을 구현한다.)안드로이드 캔버스를 사용한 스프라이트 동작이 매우 느리다
내 실행 루프의 코드는 다음과 같습니다
@Override
public void run()
{
while(running)
{
synchronized(holder)
{
if(!holder.getSurface().isValid())
{
continue;
}//end if isValid() call
Update();
Draw();
}
}//end while
}//end run()
내가 빠르게 앞뒤로 화면을 가로 질러 이동하는 스프라이트를 갖고 싶어? 스프라이트의 "속도"를 1로 설정하면 각 업데이트마다 1 픽셀 씩 이동합니다. 따라서 20 또는 30fps로 업데이트하는 경우에도 스프라이트 (제 경우에는 100x80px 스프라이트)가 매초 20 또는 30 픽셀 씩 이동한다는 것을 의미합니다. 빨리 움직일 수있는 방법이 있습니까? 큰 권리를 소리 - 나는 예를 들어, 5 스프라이트의 "속도"를 변경하는 경우
: 여기
는 딜레마? 업데이트 할 때마다 5 픽셀 씩 이동하십시오. 그러나 그것은 매끄럽지 않을 것입니다 - 매번 5 픽셀 홉핑하기 때문에 draw() 호출 사이에는 부드러운 움직임이 없습니다.분명히 프레임 속도보다 빠르게 움직이는 캔버스로 만든 게임에는 적과 NPC가 있습니다.
내가 그리기의 렌더링 메커니즘을 가지고 이와 관련된하고 어느 쪽도 나에게 속하지하지 않는 것 같다()와 Update()의 메커니즘을 업데이트하십시오. Update에서 스프라이트의 위치를 1로 변경 한 다음 그려지면 게임의 fps에 의해 제한됩니다. 일부 시스템에서는 문제가 늦어 질 때까지 문제가 있다고 생각합니다 (마지막 업데이트() 이후로 추적해야 함). 그러나이 경우 속도를 높이려면 어떻게해야합니까? 다소 혼란 스럽습니다. – Ginzorf
그것은 메서드에 의해 분리, 당신은 별도의 스레드에 의해 그것을 분할해야합니다 :) 나는 내가 말한 메커니즘에 대해 자세히 알려주 링크를보십시오. –