Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   хоровод картинок (https://javascript.ru/forum/dom-window/12168-khorovod-kartinok.html)

Леночка 04.10.2010 17:17

хоровод картинок
 
как сделать чтобы каждые пол секунды цикл продолжил свое движение по часовой стрелке?



<html>
<head>
<title></title>
<script language="JavaScript">
function mouse()
{
mouse1.style.pixelLeft+=3
mouse1.style.pixelTop+=3
id=window.setTimeout("mouse()",1)
if(mouse1.style.pixelLeft>297&&mouse1.style.pixelT op>197)
{
clearTimeout(id)
}
x()
}
function x()
{
mouse3.style.pixelLeft-=3
mouse3.style.pixelTop+=3
id1=window.setTimeout("mouse1()",1)
if(mouse3.style.pixelLeft<403&&mouse3.style.pixelT op>397)
{
clearTimeout(id1)
}
y()
}
function y()
{
mouse2.style.pixelLeft-=3
mouse2.style.pixelTop-=3
id2=window.setTimeout("mouse2()",1)
if(mouse2.style.pixelLeft<203&&mouse2.style.pixelT op>353)
{
clearTimeout(id2)
}
z()
}
function z()
{
mouse4.style.pixelLeft+=3
mouse4.style.pixelTop-=3
id3=window.setTimeout("mouse3()",1)
if(mouse4.style.pixelLeft<97&&mouse4.style.pixelTo p<247)
{
clearTimeout(id3)
}
}

</script>
</head>
<body onLoad="mouse()">
<img src="10.gif" width=100 height=150 style="position:absolute;top:0;left:250" id=mouse1>
<img src="11.gif" width=100 height=150 style="position:absolute;top:400;left:250" id=mouse2>
<img src="12.gif" width=100 height=150 style="position:absolute;top:200;left:450" id=mouse3>
<img src="13.gif" width=100 height=150 style="position:absolute;top:200;left:50" id=mouse4>
<script>
</script>
</body>
</html>

Sweet 04.10.2010 17:30

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

MikhailGirshberg 06.10.2010 09:55

ёрзают мышки
 
Цитата:

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

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

Цитата:

Сообщение от Леночка (Сообщение 73061)
как сделать чтобы каждые пол секунды цикл продолжил свое движение по часовой стрелке?

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

Для получения более ровной картинки следует пересчитывать координаты не для левого-верхнего угла, а для центра объекта. Движение по прямой тоже не самый лучший вариант. Зато простой, легко показать.
<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>

Kolyaj 06.10.2010 10:01

Цитата:

Сообщение от MikhailGirshberg
А ещё профессор...

По вашему профессор послать не может?

MikhailGirshberg 06.10.2010 10:40

Цитата:

Сообщение от Kolyaj (Сообщение 73310)
По вашему профессор послать не может?

ИМХО, фундаментальное отличие правильного профессора заключается в умении даже послать... конструктивно. Чтобы пошли учиться, а не "нафиг" ;-?

Kolyaj 06.10.2010 10:44

А с чего вы взяли, что статусы на этом форуме имеют какое-то отношение к профессорам?

MikhailGirshberg 06.10.2010 14:29

Цитата:

Сообщение от Kolyaj (Сообщение 73315)
А с чего вы взяли, что статусы на этом форуме имеют какое-то отношение к профессорам?

Просто скромная надежда, что "профессор этого форума" станет вести себя на этом форуме "как профессор".
Такая ошибка вызывается "асимметричным дуализмом языкового знака", да? И уж точно, что завязавшаяся дискуссия не имеет отношения к теме!
:stop:

Sweet 06.10.2010 15:08

MikhailGirshberg, видимо, ты живешь в мире, где каждый обязан вести себя, общаться и одеваться в соотвестсвии с социальным положением. Однако подобрые нормы не естественны, а являются порождением современного социума и современной организации внутри него. Поэтому не вижу оснований отторгать людей, не соответствующих твоему представлению о том, как они должны быть. Мы же все-таки в 21 веке живем:)
Так же хочу заметить, что действительно умные (не просто эрудированные) люди часто очень эксцентричны;)

Леночка 06.10.2010 23:11

MikhailGirshberg, Большое спасибо за КОНСТРУКТИВНЫЙ ответ:) буду надеяться что на этом сайте из аспиранта скоро вырастит мудрый профессор;)


Часовой пояс GMT +3, время: 20:47.