-2
5 개의 이미지를 양식의 맨 위에서 아래로 반복적으로 이동 시키십시오.이 이미지는 임의의 왼쪽 값을 사용하여 이전보다 약간 앞을 반복합니다. 나는 항상 그들의 최고 가치를 서로 맞추는 것처럼 보이지만 이것을 시도했다. 폼 활성화시 최상위 값은 모두 약 120 개 간격으로 설정됩니다.5 개의 이미지를 화면 맨 위에서 화면 아래로 반복적으로 이동하려면
코드 : (타이머)에
////// image1 //////
if image1.Top > 600 then begin
image1.visible := true;
image1.top := -300;
repeat
ml1 := randomrange(0, 9);
until (ml1 <> ml2) and (ml1 <> ml3) and (ml1 <> ml4) and (ml1 <> ml5);
case ml1 of
1 : image1.left := 8;
2 : image1.left := 80;
3 : image1.left := 152;
4 : image1.left := 224;
5 : image1.left := 296;
6 : image1.left := 368;
7 : image1.left := 440;
8 : image1.left := 512;
9 : image1.left := 584;
end;//case
end;//if
모든 이미지는 동일한 코드를 가지고있다. 별도의 타이머에 각 이미지의 최고 값이 같은 간격으로 같은 양만큼 증가했습니다.
이미지 상단이 별도의 타이머로 증가한다고합니다. 그러나 그것이 당신이 당신의 문제를 가지고있는 곳이기 때문에 보여 주어야 할 것입니다. 문제를 제시하지 않는 코드를 우리에게 보여줄 필요는 없습니다. 다른 여러 가지 문제가 있습니다. 별도의 타이머를 사용하는 이유는 무엇입니까? 그들은 불가피하게 단계를 벗어날 것입니다. 그리고 왜 코드 상단이 여기에 있고 다른 타이머에 설정되어 있습니까? 그것은 하나가되어야합니다! (하나 이상이 있어야한다는 것은 아닙니다 ...) – Dsm
5 이미지의 모든 동작에 사용한 다른 타이머가 하나 있다는 것을 의미했습니다. 그들은 모두 같은 간격을 사용하고 있기 때문에 문제가 될 수 없습니다 : image1.top : = image1.top + 5; image2.top : = image2.top + 5; – User049
이것은 매우 비효율적 인 방법으로 애니메이션을 적용합니다. 주변에있는 컨트롤을 사용하지 마십시오. 양식에 페인트 상자 또는 직선의 OnPaint를 사용하십시오. –