Существует очень большая проблема при создании красивых мультимедийных проектов,
когда вы хотите реализовать всевозможные плавные перемещения объектов в окне проекта. Существуют две команды для перемещения объектов - MoveTo и MoveObject.
Первая из них как раз и реализует плавное перемещение. Записывается просто, например:
MoveTo("Object","x,y,s"),
где x и y - координаты, в которые нужно переместить, а s - скорость перемещения.
Например, при s=1000 перемещение будет довольно медленным, а при s=10 - достаточно быстрым. Однако при работе этой команды загрузка процессора резко прыгает вверх: например,
загрузка моего пентиума-3000 с 3 процентов скачет до 50 или даже выше.
Команду MoveObject перемещает объекты одномоментно в конечную точку, однако её также
можно использовать для плавного перемещения объектов, если заключить её в такой вот цикл
(пример перемещения по оси X):
For i=x1 To x2
MoveObject("Object","i,ObjectY(Object)")
Pause("10")
Refresh("")
Next i
здесь x1 и x2 - начальная и конечная точки перемещения.
Теоретически, скорость перемещения можно регулировать, изменяя величину паузы в команде Pause().
Однако лучше этого не делать, а использовать коэффициент ускорения или замедления. Для ускорения
перемещения это будет выглядеть так:
For i=x1/k To x2/k
i=i*k
MoveObject("Object","i,ObjectY(Object)")
Pause("10")
Refresh("")
Next i
а для замедления - так:
For i=x1*k To x2*k
i=i/k
MoveObject("Object","i,ObjectY(Object)")
Pause("10")
Refresh("")
Next i
нужно только учитывать, что x1/k, x2/k, x1*k и x2*k должны быть ЦЕЛЫМИ числами. Я с надеждой предполагал, что такой способ перемещения может уменьшить загрузку процессора,
однако на практике оказалось, что в обоих вариантах процессор загружается сильно.
Народ - проверьте у себя оба варианта перемещения объектов, причем попробуйте перемещать
не только примитивный объект, но и картинку. Готовый пример, чтобы вам не париться, прилагаю.