Показать сообщение отдельно
  #3 (permalink)  
Старый 06.10.2010, 09:55
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

ёрзают мышки
Сообщение от Sweet Посмотреть сообщение
1. Первый день замужем что ли? Почему код неотформатирован???
2. Спроси на той помойке, где был найден сей скриптишко.
Спрашиваете, как с больного здоровье. К тому же псы брешут деликатнее. Противно. А ещё профессор...

Сообщение от Леночка Посмотреть сообщение
как сделать чтобы каждые пол секунды цикл продолжил свое движение по часовой стрелке?
По секунде вот так. Иллюстрирует скорее общие принципы подходов, чем результат в дизайнерском смысле.

Для получения более ровной картинки следует пересчитывать координаты не для левого-верхнего угла, а для центра объекта. Движение по прямой тоже не самый лучший вариант. Зато простой, легко показать.
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Ёрзают мышки ;-? </title>
    <script type="text/javascript">

      // Одна функция на все однотипные действия с объектом
      function mouse(){
        // переменные для значения шага по горизонтали и вертикали
        var horstep, verstep
        // этот цикл переберёт однотипные объекты
        for(var i = 1; i < 5; ++i){
          // получаем объект по Id
          var mnode = document.getElementById("mouse" + i)
          // значения границ с отсечённым суффиксом размерности ("px")
          var left = parseInt(mnode.style.left)
          var top = parseInt(mnode.style.top)

          // алгоритм назначения величин шагов может быть сложнее
          if(top >= 200) horstep = -3   // в нижней половине области ёрзаем влево
          else horstep = 3  // наверху - вправо
          if(left >= 250) verstep = 3 // в правой половине области едем вверх
          else verstep = -3 // слева - вниз

          // снова собираем величину для границы
          mnode.style.top = top + verstep + "px"  //  Величина должна быть строкой из числа и суффикса
          mnode.style.left = left + horstep + "px"  //  сначала вычисляется число, затем происходит конкатенация

        }
        setTimeout(mouse, 1000) //  повторим через секунду
      }

    </script>
    <style type="text/css">
      img{/*стиль картинки задаёт её размер*/
        width: 100px;
        height: 150px;
      }
      div {/*позиция определяется вмещающим блоком*/
        position: absolute;
        border: solid gray 1px;/*рамка необязательна.
                               Даёт наглядность в отсутствии картинок*/
      }
    </style>
  </head>
  <body>
    <!--элементы спрятаны во вмещающие блоки-->
    <div id="mouse1" style="top:0;left:250px">
      <img alt="mouse1" src="10.gif" />
      <!--Управлять стилями вмещающих блоков удобнее,
      чем свойствами картинок напрямую-->
    </div>
    <div id="mouse2" style="top:400px;left:250px"><img alt="mouse2" src="11.gif"/></div>
    <div id="mouse3" style="top:200px;left:450px"><img alt="mouse3" src="12.gif"/></div>
    <div id="mouse4" style="top:200px;left:50px"><img alt="mouse4" src="13.gif"/></div>
    <script type ="text/javascript">
      mouse() // скрипт в конце документа - хорошая альтернатива обработчику события onLoad
    </script>
  </body>
</html>
Ответить с цитированием