конец;
конец;
ПРОЦЕДУРАTBounceThread. Выполнять;
начинать
Пока не прекращено
начинать
Синхронизировать(MoveShape);
конец;
конец;
конструкторTBounceThread. Create(Приостановлено: Boolean; Shape: TShape; XSpeed, YSpeed: Integer);
начинать
унаследованноеСоздать (Приостановлено);
ФШейп: КШейп;
FXSpeed: ΚXSpeed {скорость оси X}
FYSpeed: ΚYSpeed; {Скорость направления оси Y}
FreeOnTerminate: ΚTrue;
конец;
конец.
Это многопоточная игра с бампером. У вас может быть несколько разных шариков, которые принадлежат разным потокам и сталкиваются на экране независимо. Очевидно, что поскольку отображение нескольких бегущих шаров будет одновременно использовать ресурсы VCL, в целях безопасности мы добавили Synchronize (MoveShape) в исполнительную часть процесса Execute для вызова процесса MoveShape Фактически везде, где нужны ресурсы VCL. для работы, такие как формы и растровые изображения, следует добавить к вызову Synchronize.
При выполнении мы можем создать новую программу, затем добавить указанный выше модуль BncThrd в раздел USES, а затем добавить два элемента управления Shape Shape1 и Shape2 в ее форму. FORM1 может быть прямоугольником, а Shape2 — кругом. Добавьте следующий код, чтобы заставить прямоугольник и круг двигаться.
процедураTForm1. Button1Click (Отправитель: TObject);
начинать
TBounceThread. Создать (Ложь, Форма1,1,2);
TBounceThread. Создать (Ложь, Форма2,2,3);
конец;
Блог автора: http://blog.csdn.net/zou5655/