Имитация перемещения объекта
Dzmitry; 25.2.04

Подскажите плиззз!


Мне необходимо создать эффект перемещения допустим небольшого закрашенного кружка. Для этого можно (один из вариантов) сделать много-много кружков и visible их по очереди. Так вот в чем проблема, я хочу свезать с тегом скорость перемещения объекта, но тут возникает проблем с триггером: если делаешь минимальный триггер(250мкс), то это слишком медленно, а если по изменению -то слишком быстро, и приходится гимороем заниматься (загружать процессор работой чтобы он задерживал на некоторое время каждый из объектов видимым на некоторое время). Так вот есть ли какая нибудь функция Си, задержки (паузы выполнения программы). Но это нехороший способ, т.к. хотелосбы чтобы обработка остальных тегов не страдала из-зи этого объекта.
Может быть отслеживать время...Возможно ли точно (с точностью до нескольких мкс) оследить время visible. И если да, то какой функцией возвращается время для этого.

Заранее огромное спасибо откликнувшимся!!!
Re: Имитация перемещения объекта
Макс Прилепский; 26.2.04

А можно не париться, сделать Gif-файл с любой скоростью анимации и по тегу активировать/деактивировать его воспроизведение, используя, к примеру, ActiveX-компонент Animated Gif Control. У компонента есть свойство "Номер кадра", по изменению тега можно выводить нужный кадр анимации

Re: Имитация перемещения объекта
Dzmitry; 26.2.04

....по изменению тега можно выводить нужный кадр анимации....

А как сделать чтобы тег определял только скорость перехода от кадра к кадру (относительную конечно), а не являлся номером кадра?
Re: Имитация перемещения объекта
Маслов Дмитрий; 26.2.04

Я бы рекомендовал Вам написать свой ActiveX со свойством "скорость". Я думаю, что реализация более-менее быстрой анимации на скриптах WinCC будет безбожно сильно загружать процессор.

Re: Имитация перемещения объекта
Dzmitry; 26.2.04

В принципе я эту задачу уже решил.

Если я правильно понимаю Скада выполняет свою программу цеклически. Я сделал как бы счетчик циклов который инкрименируется (+1) с скаждым разом при выполнении блока программы относящейся к интиресующиму нас объекту, и когда счетчик доходит до заданной выличины (например 40) он обнуляется и в тоже время включает visible следующего кадрика, а этого выключает. При этом в качестве уровня до которогу будет считаться счетчик можно без труда определить как тег (фактически этот тег будет регулировать скорость смены кадров), а далее пожалуйста изменяйте скорость перемещения объекта.
А как вам идейка, проста и в тоже время не так уж плоха, вы не находите. :))
Этот принцит не наносит вред для обработки других объектов, т.к. нет никакой задержки выполнения программы, которая была бы если применять функции задержки Си.
Надеюсь эта идейка комунибудь пригодиться, буду только рад. :)
Если у кого нибудь есть какая нибудь лучшая идея напишите.

Спосибо!
Re: Имитация перемещения объекта
Макс Прилепский; 1.3.04

У Animated Gif Control есть свойсво "задержка между кадрами". Я этот копмонент использовал для анимированного отображения скорости вращения ротора, а также для отображения его реверсивного вращения (есть и такое свойство у компонента). Модель ротора я делал в 3DS Max, рендерил несколько кадров, потом создавал на их основе Gif-файл.

Re: Имитация перемещения объекта
Dzmitry; 1.3.04

Макс Прилепский, твой вариант мне очень понравился, спосибо за помощь.