| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Пробегающий кружок по графику |
| Автор: Ciber SLasH 25.5.2005, 07:06 | ||||
| Сваял скрипт, в котором пробегает шарик (gif-ка) по графику синуса. Но вся проблема в том, что он не работает в IE, а работает в Опере. Нужно чтоб и там и сям работало.
И ещё вопрос: а как вычислять координаты gif-точки, если ей поставить свойство position в relative и запихнуть DIV в таблицу ? Если было бы так:
|
| Автор: Aliance 25.5.2005, 16:27 | ||
| Лично мне в ИЕ6 (SP2) писалось, что сценарий может тормозить процессов. Попробуй область уменьшить... Затем куча мелких недочетов:
div`у пропиши id="test", и по document.getElementById('test') вычисляй... |
| Автор: Ciber SLasH 26.5.2005, 04:07 | ||
| Всё-таки так и не смог нормально сделать отрисовку при задании position: relative... Подправил чють скрипт:
Как бы теперь сделать правильную отрисовку при position: relative ? Need Help !! ЗЫ: количество шагов уменьшил (step = <...> * 10) в 10 раз, глобальные переменные испоьзуются в 2-х функциях (не переписывать же их 2 раза), точки с запятой -- нафик, и без них всё работает (знаю что могут обламаться всякие парсеры, но до этого мне ещё далеко, а я люблю минимализм -- меньше символов -- меньше вес страницы). |
| Автор: Aliance 26.5.2005, 13:20 | ||||
А вне функции их не задать? Тогда они будут глобальными...
С такими задатками далеко не уйдешь |
| Автор: Ciber SLasH 26.5.2005, 15:30 |
| Выяснил, что при position: relative координата left отсчитывается от предыдущего элемента, поэтому приходится при вычислении новой left-координаты рисунка отнимать занимаемую ширину предыдущих рисунков. Т.е. left: x - (i * <ширина рисунка>). C учётом этого переписал скрипт и отредактировал предыдущий пост, дабы не выкладывать снова тот же скрипт в новом посту. Но появились другие баги (для понимания при отладке раскомментировать коммент в функции putPixel): 1) не понятно почему document.getElementById('point' + i).offsetParent.tagName указывает на BODY а не на DIV 2) теперь график рисуется правильно, но только до 56-го прохода, дальше offsetLeft контейнера принимает отрицательные значения, что и приводит к неправильной отрисовки. Хотя по идеи положительные значения offsetLeft контейнера должны продолжаться вплоть до конца DIV-а... ещё интересные вещи творятся если: 1) из xx не вычитать (i*14) 2) а в IMG поставить в стиле вместо left -- right |
| Автор: Sardar 27.5.2005, 02:44 |
| 1) потому что offsetParent и parentNode это не одно и тоже, первый это блочный элемент с которого начинается отсчёт координат потомков, второе это родительский узел элемента. 2) посмотри это, наваял за пол часа: http://forum.vingrad.ru/index.php?act=ST&f=188&t=53487 |
| Автор: Ciber SLasH 27.5.2005, 17:56 | ||||||
| 10x Sardarу за плоттер, при просмотре исходника я понял почему мой график глючил -- нужно было реализовать нормальную задержку через setInterval() и кой-чего подправить с позицией. Я всё-таки оставил свой вариант графика (он более понятен). Вот переделанный скрипт (он лишь заточен на движение по синусу, остальное пока не нужно):
Если раскомментировать 45 строку, а в 54-й вместо оператора += поставить просто =, то вместо отрисовки графика будет движение по графику. Кстати этот скрипт есть модификация одной лабы на Паскале:
ЗЫ: хотел выделить += и = жирным стилем -- не получилось. Хоть и стоит:
|