function easeinoutquart(t,b,c,d) as float
't=time, b=startvalue, c=change in value, d=duration
d=d/2
t=t/d
if (t < 1) then
return c/2*t*t*t*t + b
end if
t=t-2
return -c/2 * (t*t*t*t - 2) + b
end function
나는 값이 밖으로 빠르게 이동 상황에 계속 실행 어지러운 속도로 화면 밖으로 움직이는 물체가 생기는 경계. 첫 번째 상황은 함수의 결과를 정수 값으로 절단하여 발생하는 것 같았습니다. 그 다음으로 똑같은 동작을 유발 한 것은 객체가 멈추고 새로운 여유 거리가 입력 된 후 시간 값이 재설정되지 않은 것처럼 보였습니다. 목적지 값 (change = destination-start)을 변경 한 후 재설정을 추가하면 문제가 완전히 수정 된 것 같습니다.
이제 이미지를 다운로드하고 교체하는 루프에 코드를 추가했습니다. 루프에서 추가 된 실행 시간은 때때로 값을 경계 밖으로 이동시켜 화면 밖으로 돌진하는 동일한 이미지 흐림을 생성하는 것처럼 보입니다.
간단히 코드를 설명합니다 :loop
check for user input (up down left right select)
if so set new dest position for all images, reset timer for all images
if a new image is selected on screen, load related content, reset related content timer
is there an image in the queue to download? if so get initiate async download
are any images downloaded? If so swap out temp image with final image
call easing function for primary images (vertical movement on y axis)
call easing function for related content (horizontal movement on x axis)
draw all graphics and swap display buffer
end loop
전에 코드 (실제 스왑 그냥 포인터 변화)를 모든 사전로드 된 이미지 및 임시 이미지 모두 큰 작업 된 이미지 다운로드/스왑을 추가 할 수 있습니다. 이제 임시 이미지를로드하고 스와핑을 수행 했으므로 루프가 1 초 30 분의 1 초 이상 실행되고 어쩌면 이상한 타이머 값을 유발할 수 있다고 생각합니다.
본질적으로, 나는 어떤 종류의 "governer"클램프가 있는지 궁금합니다. 나는 이완 기능이 신속하게 제어 할 수없는 미친 값을 생성하지 못하도록하는 가치를 부여 할 수 있습니다. 예를 들어 이동 된 총 거리는 단일 반복에서 250 픽셀을 넘지 않아야합니다. 실제로 대상 값을 향한 단지 몇 픽셀이어야합니다.