Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.01.2012, 03:06
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от Livaanderiamarum Посмотреть сообщение
лишние блоки сильнее нагружают комп чем то что сделал я. вот с чего.
да.. четыре блока эт серьезный удар по производительности... согласен.
__________________
С моих слов записано верно.
Ответить с цитированием
  #12 (permalink)  
Старый 29.01.2012, 03:12
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

с чего это он серьезный?? ты представляешь сколько браузер может обрабатывать и не захлебываться? 4 блока для него вообще не заметны. вернее для нас.
прочитай мой текст внимательно, твой способ это НЕПОМЕРНАЯ нагрузка, если существует мой.
Ответить с цитированием
  #13 (permalink)  
Старый 29.01.2012, 05:48
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Как то так, но в идеале события лучше вешать через нормальные методы, addEvenetListener. Но для примера привожу примерно так.
Возможно что-то придется под себя подкорректировать.
<!DOCTYPE html>
<html>
    <head>
        <style type="text/css">
            div {
                position: absolute;
                left: 50%;
                top: 50%;
                width: 100px;
                height: 100px;
                margin: -50px 0 0 -50px;
                background-color: #0f0;
                color: #f00;
            }
        </style>

        <script type="text/javascript">
            function init() {
                function mouseDirection( callback ) {

                    // Save old mouse position
                    var X, Y;

                    document.onmousemove = function( e ) {
                        // correction event for IE
                        e = e || window.event;
                        // correction page for IE
                        if ( e.pageX == null && e.clientX != null ) {
                            var html = document.documentElement,
                                body = document.body;
                            e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
                            e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
                        }

                        // reset direction to default
                        var direction = 0;

                        // adjust coordinates or move starting position
                        X = ( X || ( X = e.pageX ) ) && X <= e.pageX + 2 && X >= e.pageX - 2 && ( e.pageY >= Y + 2 || e.pageY <= Y - 2 ) ? e.pageX : X;
                        Y = ( Y || ( Y = e.pageY ) ) && Y <= e.pageY + 2 && Y >= e.pageY - 2 && ( e.pageX >= X + 2 || e.pageX <= X - 2 ) ? e.pageY : Y;

                        // definition position
                        direction += Y > e.pageY ? 1 : 0; // to TOP
                        direction += X < e.pageX ? 2 : 0; // to RIGHT
                        direction += Y < ( Y = e.pageY ) ? 4 : 0; // to BOTTOM
                        direction += X > ( X = e.pageX ) ? 8 : 0; // to LEFT

                        // execute callback
                        callback( direction );
                    }
                }

                (function( window ) {
                    var direction = 0;
                    mouseDirection(function( dir ) {
                        direction = dir;
                    });

                    document.getElementById('debug').onmouseout = function() {
                        var pos = '';

                        pos += direction & 1 ? 'Top' : '';
                        pos += direction & 2 ? 'Right' : '';
                        pos += direction & 4 ? 'Bottom' : '';
                        pos += direction & 8 ? 'Left' : '';

                        document.getElementById('debug').innerHTML = pos;
                    }
                })( window );
            }
        </script>
    </head>
    <body onload="init();">
        <div id="debug"></div>
    </body>
</html>
Ответить с цитированием
  #14 (permalink)  
Старый 29.01.2012, 06:04
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

devote,
и что вообще делает твой код, почему определение направления происходит только при выведении мышки за пределы квадрата?
Ответить с цитированием
  #15 (permalink)  
Старый 29.01.2012, 16:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Livaanderiamarum
devote,
и что вообще делает твой код, почему определение направления происходит только при выведении мышки за пределы квадрата?
потому что автору так надо было
Ответить с цитированием
  #16 (permalink)  
Старый 29.01.2012, 16:55
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот тебе другое:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
            function init() {
                function mouseDirection( callback ) {

                    // Save old mouse position
                    var X, Y;

                    document.onmousemove = function( e ) {
                        // correction event for IE
                        e = e || window.event;
                        // correction page for IE
                        if ( e.pageX == null && e.clientX != null ) {
                            var html = document.documentElement,
                                body = document.body;
                            e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
                            e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
                        }

                        // reset direction to default
                        var direction = 0;

                        // adjust coordinates or move starting position
                        X = ( X || ( X = e.pageX ) ) && X <= e.pageX + 2 && X >= e.pageX - 2 && ( e.pageY >= Y + 2 || e.pageY <= Y - 2 ) ? e.pageX : X;
                        Y = ( Y || ( Y = e.pageY ) ) && Y <= e.pageY + 2 && Y >= e.pageY - 2 && ( e.pageX >= X + 2 || e.pageX <= X - 2 ) ? e.pageY : Y;

                        // definition position
                        direction += Y > e.pageY ? 1 : 0; // to TOP
                        direction += X < e.pageX ? 2 : 0; // to RIGHT
                        direction += Y < ( Y = e.pageY ) ? 4 : 0; // to BOTTOM
                        direction += X > ( X = e.pageX ) ? 8 : 0; // to LEFT

                        // execute callback
                        callback( direction );
                    }
                }

                mouseDirection(function( direction ) {
                    var pos = '';
                    pos += direction & 1 ? 'Top' : '';
                    pos += direction & 2 ? 'Right' : '';
                    pos += direction & 4 ? 'Bottom' : '';
                    pos += direction & 8 ? 'Left' : '';

                    document.getElementById('debug').innerHTML = pos;
                });
            }
        </script>
    </head>
    <body onload="init();">
        <div id="debug"></div>
    </body>
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 29.01.2012, 18:42
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

потому что автору так надо было[источник?]
Ответить с цитированием
  #18 (permalink)  
Старый 29.01.2012, 20:50
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от jsuse
Отловить направление onmousemove event?
была похожая тема, про то откуда зашла мышь С какой стороны заходит мышь!
Ответить с цитированием
  #19 (permalink)  
Старый 29.01.2012, 21:48
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Я не знаю как вы вообще столько кода выдаете

<body>
<script>
document.body.onmousemove = (function() {
	var y = 0
	var x = 0
	return function(e) {
		if (e.clientY > y) {
			console.log('вниз')
		} else if (e.clientY < y) {
			console.log('вверх')
		}
		if (e.clientX > x) {
			console.log('вправо')
		} else if (e.clientX < x) {
			console.log('влево')
		}
		x = e.clientX; y = e.clientY
	}
})()
</script>
</body>

Последний раз редактировалось Livaanderiamarum, 29.01.2012 в 21:54.
Ответить с цитированием
  #20 (permalink)  
Старый 29.01.2012, 21:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Livaanderiamarum
Я не знаю как вы вообще столько кода выдаете
что бы работало везде, например твой у меня не работает.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать event, эмулирующий enter Artanis Events/DOM/Window 7 16.07.2019 06:40
Как можно отловить id который добавил с помощью append() ? saturn Элементы интерфейса 4 17.01.2012 01:35