Существует очень большая проблема при создании красивых мультимедийных проектов, когда вы хотите реализовать всевозможные плавные перемещения объектов в окне проекта. Существуют две команды для перемещения объектов - 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 должны быть ЦЕЛЫМИ числами. Я с надеждой предполагал, что такой способ перемещения может уменьшить загрузку процессора, однако на практике оказалось, что в обоих вариантах процессор загружается сильно. Народ - проверьте у себя оба варианта перемещения объектов, причем попробуйте перемещать не только примитивный объект, но и картинку. Готовый пример, чтобы вам не париться, прилагаю.
Да пребудет с вами ММВ!
|