14:14 Движения объектов в JavaScript | |
Движение элемента на Web-странице осуществляется путем изменения значений свойств, задающих его координаты.
Рассмотрим первые три пункта, а четвертый будет рассмотрен в следующих статьях.
1 Изменение координат элемента с помощью циклического процесса
Для организации циклического процесса могут быть использованы следующие методы объекта window:
Использование метода setTimeout() для организации движения элемента показано в примере № 1, где реализовано движение элемента Web-страницы - буквы Z, заданной с помощью тэга <P>, по траектории в виде синусоиды (): <HTML> В примере 1 с помощью функции f(x) реализовано движение объекта справа налево и сверху вниз по синусоиде y=60sin(x). Поскольку траектория указана в виде тригометрической функции, для ее задания был использован объект Math, свойства и методы которого описаны в разделе 3. При этом было выполнено преобразование аргумента функции sin(x) из градусов в радианы. Направление и скорость движения объекта зависит от величины и знака приращений его координат dx и dy. На скорость движения также влияет промежуток времени, через который эти приращения происходят (2-й параметр метода setTimeout()). Выбор амплитуды и скорости движения в примере 1 осуществлен из соображений наглядности. По щелчку мышки по букве Z вызывается функция moveTxt(), которая осуществляет движение этого элемента из точки окна браузера с координатами: left=0; top=100 путем задания приращений его координатам left и top: z.style.left=x+dx;
до тех пор, пока он не приблизится к границам окна браузера (граница не достигается, чтобы буква Z оставалась в области полной видимости). Значения левой и нижней границы окна браузера определяются с помощью свойств тэга <BODY> clientWidth и clientHeight. Эти свойства могут быть использованы для определения размеров любых элементов Web-страницы, которые имеют ширину и высоту. function moveTxt() Кроме того, вызов функции moveTxt() в этом случае следует выполнять так: onClick="timer=setInterval('moveTxt()',125);"
2 Изменение координат элемента по событиям мышки
Движения объектов Web-страницы по экрану кроме рассмотренного выше способа изменения его координат с помощью программно организованного циклического процесса, может осуществить сам пользователь Web-сайта с помощью мышки. В примере № 2 описана функция runRef(), которая каждый раз при достижении указателем мышки ссылки Ссылка или при движении указателя мышки по ссылке выполняет приращения координат этого элемента, реализуя эффект "убегающей" от пользователя ссылки. Все его попытки щелкнуть по ссылке, чтобы загрузить новую страницу (js_1.htm), оказываются безрезультатными. С помощью переменных dx и dy, которые меняют свой знак на противоложный при достижении соответственно вертикальных или горизонтальных границ окна браузера, реализовано отражение ссылки при движении по экрану от его границ. Вызов функции runRef() как по событию Mousemove, так и по событию Mouseoverобеспечивает более надежную защиту ссылки от щелчка мышки. <HTML>
3 Перетаскивание элементов
Перетаскивание элементов Web-страницы с помощью мышки реализуется путем присваивания текущим координатам перемещаемого элемента текущих координат мышки. Доступ к координатам мышки можно осуществить, используя такие свойства объекта event:
В примере № 3 создается Web-страница, содержащая три элемента - рисунок и два слова "ТЕКСТ" одинакового размера, но разных цветов. <HTML> При щелчке мышки по любому из этих объектов (по событию Click) для отмеченного объекта устанавливается режим перетаскивания: в переменную n заносится порядковый номер этого элемента Web-страницы, например, для рисунка: n=5, для первого текста: n=6, для второго: n=7 (при щелчке по свободному пространству окна браузера n принимает значение 4 - номер тэга BODY). Режим перетаскивания отмеченного объекта реализуется путем вызова при движении мышки (по событию Mousemove) функции drag(), которая выполняет следующие действия:
При щелчке правой кнопкой мышки (по событию Contextmenu) циклически меняется значение переменной l (0,1,2,0,...), задающей текущее значение свойства z-index, что позволяет любому объекту при задании соответствующего значения или перекрывать другие объкты Web-страницы, или располагаться под ними. Для отмены режима перетаскивания отмеченного объекта необходимо повторно щелчкнуть мышкой. При этом в переменную n заносится номер уже нового объекта - того, который в момент щелчка находился под перетаскиваемым объектом. Это связано с тем, что при движении координаты указателя мышки на пиксел опережают координаты самого объекта. В этом случае для нового объекта устанавливается режим перетаскивания (если только этим объектом не является тэг BODY). Добавим, что закомментированные строки функции drag() были использованы при отладке программы для вывода в поле статуса окна браузера значений таких контрольных данных: номер, z-index и координаты перетаскиваемого объекта, а также координаты мышки. | |
| Категория: Java/ Javascript/ jQuery | Просмотров: 1259 | Добавил: Ne0Lite | |