Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определение координат мышки
 
 автор: Воитель   (29.07.2008 в 11:18)   письмо автору
 
 

Здравствуйте.
Мне надо определять координаты мышки, как можно чаще. Воопщем надо следить за курсором, и в его соответсвующих положениях отправлять флэшке занчение переменной.
Нашёл пример, в котором определяют координаты мышки. Почти полностью в нём разобрался, только не пойму почему он выполняет постоянно, раньше я пользовался функицией сеттаймаут(точно не помню как она называется) она выполняла заданную функцию через определённое кол-во времени.А тут я не нашёл ни чего подобного.

<script type="text/javascript">
<!--
    function getCoords() {
    // вызывается при перемещении курсора
    // над слоем с картой
        // координаты слоя с картой
        // в окне браузера
        imageMapX = findPosX(imageMap);
        imageMapY = findPosY(imageMap);
        imageMap.onmousemove = moveDot;
        imageMap.onmouseover = moveDot;
        // точку надо убирать, если курсор
        // покинул слой с картой
        imageMap.onmouseout = function (){
            myDot.style.display='none';
            };
        // координаты точки надо запомнить
        imageMap.onclick = coordsFix;
    }

    function coordsFix() {
    // функция фиксирует координаты точки при клике
        // координата X
        myForm.coordXfix.value = myForm.coordX.value;
        // координата Y
        myForm.coordYfix.value = myForm.coordY.value;
        // точка показывается
        myDot2.style.display='block';
        // и позициоируется
        myDot2.style.left = myForm.coordX.value+'px';
        myDot2.style.top = myForm.coordY.value+'px';
    }
    function moveDot(cursor) {
    // функция перемещения точки над слоем с картой
        // точку надо покзать
        myDot.style.display='block';
        if(!cursor) var cursor = window.event;
        myForm.coordX.value = '';
        myForm.coordY.value = '';
        var x = 0;
        var y = 0;
        if (cursor.pageX || cursor.pageY) {
            x = cursor.pageX;
            y = cursor.pageY;
        }
        else if (cursor.clientX || cursor.clientY) {
            x = cursor.clientX + document.body.scrollLeft;
            y = cursor.clientY + document.body.scrollTop;
        }
        x -= imageMapX;
        y -= imageMapY;
        x -= dX;
        y -= dY;
        // для наглядности координаты точки
        // показываются во временых полях формы
        // справа "X" и "Y"
        (x < 0) ? myForm.coordX.value = 0 : myForm.coordX.value = x;
        (y < 0) ? myForm.coordY.value = 0 : myForm.coordY.value = y;
        // если курсор не покинул слой с картой,
        // точка перемещается с курсором
        if (x>0 && y>0 && x<mapWdt && y<mapHgt) {
            myDot.style.left = x+"px";
            myDot.style.top = y+"px";
        }
    }
    function getObj(name) {
    // функция захвата объекта, используется при инициализации
        if (document.getElementById) return document.getElementById(name);
        else if (document.all) return document.all[name];
        else if (document.layers) return document.layers[name];
        else return false;
    }
    function findPosX(obj) {
    // X-координата слоя
        var currleft = 0;
        if (obj.offsetParent)
            while (obj.offsetParent) {
                currleft += obj.offsetLeft
                obj = obj.offsetParent;
            }
        else if (obj.x) currleft += obj.x;
        return currleft;
    }
    function findPosY(obj) {
    // Y-координата слоя
        var currtop = 0;
        if (obj.offsetParent)
            while (obj.offsetParent) {
                currtop += obj.offsetTop
                obj = obj.offsetParent;
            }
        else if (obj.y) currtop += obj.y;
        return currtop;
    }

function init() { // инициализация
    // смещение для точки
    dX = 7;
    dY = 7;
    // форма
    myForm = getObj('mapForm');
    // слой с картой
    imageMap = getObj('schemePlace');
    imageMap.onmouseover = getCoords;
    // ширина и высота слоя - смещение
    // чтобы точка за пределы картинки
    // даже не думала уходить
    mapWdt = imageMap.offsetWidth - dX;
    mapHgt = imageMap.offsetHeight - dY;
    // точки
    myDot = getObj('magDot');
    myDot2 = getObj('magDot2');
}


// ожидание загрузки страницы
// и вызов функции инициализации
try {
    window.addEventListener('load', init, false);
} catch(e) {
    window.onload = init;
}
    
    
//-->    
</script>

  Ответить  
 
 автор: GeorgeIV   (29.07.2008 в 11:51)   письмо автору
 
   для: Воитель   (29.07.2008 в 11:18)
 

постоянно отслеживаются события от мыши

  Ответить  
 
 автор: Воитель   (30.07.2008 в 09:42)   письмо автору
 
   для: GeorgeIV   (29.07.2008 в 11:51)
 

Я так и думал, а не надо сканировать опреденелие события?
И как код возвращается обратно?
Т.е. Как он проходит по какому кругу?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования