Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2012, 11:33
Новичок на форуме
Отправить личное сообщение для S.Nadolskiy Посмотреть профиль Найти все сообщения от S.Nadolskiy
 
Регистрация: 06.03.2012
Сообщений: 1

Задаем движение
Доброго всем времени суток! Я тут новенький (как на форуме, так и в JavaScript(только начал)), так что просу строго не судить и сразу же приношу свои извинения, если что-то не в том разделе пишу или т.п.
Собственно в чём проблема:
Необходимо привести имитацию солнечного дня, а именно: есть 7 положений солнца:
1-е - 7 часов - 90 градусов;
2-е - 9 часов - 120 градусов;
3-е - 11 часов - 150 градусов;
4-е - 13 часов - 180 градусов;
5-е - 15 часов - 210 градусов;
6-е - 17 часов - 240 градусов;
7-е - 19 часов - 270 градусов;
Вопрос собственно в том, как именно это сделать?
Мои соображения:
Я так понимаю необходимо математически описать круг и каким-то образом передать координаты обету?! Описать получается только синус(косинус), а при любых других вариантах объект движется только вперед и назад.
Не понимаю как это сделать!
Вот что есть:
------------------------------------------------------------------
В index.html:

<html>
<head>

<link rel="stylesheet" type="text/css" href="./style_sytki.css" />

<script type="text/javascript" src="./sutki.js"></script> 
</head>
<body>
<img src="./img/sun.png" alt="Солнце" id="sun" />

<script type="text/javascript">
    var d = document;                                   
    var l_sun, r_sun = setInterval(right_sun, 30); 
    var ch = setInterval(sun_change, 200);
    var direct;
    var grad = 0, pi = Math.PI, rad = pi/180;
    var sin = setInterval(sinus, 30);
</script>

</body>
</html>


----------------------------------------------------------------
В style_sytki.css

html, body {
    height: 100%;
}
body {
    margin: 0;
    background-image: url(./img/bg.jpg);
}
img {
    display: block;
    position: absolute;
}
#sun {
     margin-top: 200px;

-------------------------------------------------------------------
В sutki.js:

function sun_change() {
     var pict = d.getElementById('sun');
     if (direct == 'right') {
        pict.src = './img/sun.png';
     } else if (direct == 'left') {
        pict.src = './img/sun1.png';
     }
}

right_sun = function() {   
    var obj = d.getElementById('sun');                               
    if (obj.offsetLeft < (d.body.offsetWidth - obj.offsetWidth)){	
        obj.style.left = obj.offsetLeft + 1 + 'px';  
        direct = 'right';                 
    } else {                                                                 
 	    clearInterval(r_sun);                                                   
        l_sun = setInterval(left_sun, 30); 
        direct = 'left';                                         
    }                
}

left_sun = function() {         
	 var obj = d.getElementById('sun');                               
	 if (obj.offsetLeft > 0)                                                
     	 obj.style.left = obj.offsetLeft + -1 + 'px';                       
     else {                                                                 
 	    clearInterval(l_sun);                                                   
        r_sun = setInterval(right_sun, 30); 
                                                   
     }                                                                      
} 
var sinus = function() {
	 grad == 360 ? grad = 0 : grad++;
	 var position_sun = parseInt(200*Math.cos(rad * grad));
	 d.getElementById('sun').style.top = position_sun + 'px';
}

------------------------------------------------------------------
Вот как бы и всё! Подскажите, как и что нужно сделать чтобы заставить его двигаться по кругу!
Всем спасибо!

Последний раз редактировалось S.Nadolskiy, 25.03.2012 в 11:35.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2012, 16:25
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Вот сюда создай твой пример: http://jsfiddle.net, чтобы мы могли его запустить и посмотреть что ты вообще делаешь.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2012, 18:39
Аватар для NoResponse
Профессор
Отправить личное сообщение для NoResponse Посмотреть профиль Найти все сообщения от NoResponse
 
Регистрация: 17.06.2010
Сообщений: 152

хмммм, ему похоже нужно что то вроде этого
<img src="http://javascript.ru/forum/images/smilies/smile.gif" alt="Солнце" id="sun" />

<script type="text/javascript">
function circle(){
  angle=(angle+step)%360;
  var rad=rad1*angle,
  xx=x+Math.sin(rad)*radius,
  yy=y+Math.cos(rad)*radius;

  sun.style.top=yy+'px';
  sun.style.left=xx+'px';
}

var pi=Math.PI,
rad1=pi/180,
angle=0,
radius=40,
step=5,
x=200,
y=50,
sun=document.getElementById('sun');
  sun.style.position='absolute';
  sun.style.top=y+'px';
  sun.style.left=x+'px';

  var t = setInterval(circle, 40);

</script>
Ответить с цитированием
  #4 (permalink)  
Старый 26.03.2012, 10:58
Аспирант
Отправить личное сообщение для m4gz Посмотреть профиль Найти все сообщения от m4gz
 
Регистрация: 27.10.2011
Сообщений: 43

По мне лучше использовать html5 тэг canvas и перерисовывать по ходу
На http://stackoverflow.com видел пару часов назад как раз то что нужно, но сейчас не могу найти в сафари история троит..
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объекта за курсором Алексаднр Элементы интерфейса 2 23.10.2011 21:01
Движение объекта в ячейке определённого размера lammeR Общие вопросы Javascript 4 20.04.2010 17:14
движение объекта lammeR Общие вопросы Javascript 5 08.03.2010 01:04
Движение скроллинга окна по направлению миши bobus123 Events/DOM/Window 0 02.09.2009 15:17
Движение обЪекта Rusel6 Элементы интерфейса 2 14.08.2009 14:49