Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2014, 16:13
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

Помогите с условием
Добрго времени суток уважаемые знатоки
есть код который работает с косяком если посмотрите увидите его.
подскажите как исправить.
или хотябы наводящие вопросы. За любую помощь заранее благодарен
<!DOCTYPE html>
<html>
<head>
    <title></title>

    <style>
        #wrapper{
            position: relative;
            border: 2px solid #000000;
            width: 500px;
            height: 400px;
        }

        #test{
            width: 100px;
            height: 100px;
            position: absolute;
            background: #ff0000;
        }
    </style>

</head>
<body>

<div id="wrapper">
    <div id="test"></div>
</div>

<script type="text/javascript">
var direction = [[1,1],
    [1,-1],
    [-1,-1],
    [-1,1]];
var direct = 0;


function move() {

    var elem = document.getElementById('test');

    var left = 0; 
    var top = 0;  

    function frame() {

        var currentCoord = [left, top];
        var nextCoord = currentCoord.map(function(value, index) { return value + direction[direct][index] } );

        elem.style.left = nextCoord[0] + 'px';
        elem.style.top = nextCoord[1] + 'px';

        left = nextCoord[0];
        top = nextCoord[1];

        var x = 0;
        var y = 1;

        if ( nextCoord[y] == 300  ) {
            direct = 1;


            
        }
        if ( nextCoord[x] == 400 ) {
            direct = 2;
    

        }
        if ( nextCoord[y] == 0  ) {
            direct = 3;
           
        }
        if( nextCoord[x] == 0 ) {
            direct = 0;
        }
            


    }
    var timer = setInterval(frame, 1); 
}
move();
</script>

</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2014, 16:51
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

А эти извращения с массивами принципиальны? И если да, то почем всё-таки не сделать как-то так:
<!DOCTYPE html>
<html>
<head>
    <title></title>

    <style>
        #wrapper{
            position: relative;
            border: 2px solid #000000;
            width: 500px;
            height: 400px;
        }

        #test{
            width: 100px;
            height: 100px;
            position: absolute;
            background: #ff0000;
        }
    </style>

</head>
<body>

<div id="wrapper">
    <div id="test"></div>
</div>

<script type="text/javascript">
var direction = [[1,1],
    [1,-1],
    [-1,-1],
    [-1,1]];
var direct = 0;

var directionDif = [1,1];

function move() {

    var elem = document.getElementById('test');

    var left = 0; 
    var top = 0;  

    function frame() {

        var currentCoord = [left, top];
        var nextCoord = currentCoord.map(function(value, index) {
          return value + directionDif[index];
        });

        elem.style.left = nextCoord[0] + 'px';
        elem.style.top = nextCoord[1] + 'px';

        left = nextCoord[0];
        top = nextCoord[1];

        var x = 0;
        var y = 1;

        if ( nextCoord[y] >= 300  ) {
            directionDif[y] = -1;
        }
        if ( nextCoord[x] >= 400 ) {
            directionDif[x] = -1;
        }
        if ( nextCoord[y] <= 0  ) {
            directionDif[y] = 1;
        }
        if( nextCoord[x] <= 0 ) {
            directionDif[x] = 1;
        }
            


    }
    var timer = setInterval(frame, 1); 
}
move();
</script>

</body>
</html>

?
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2014, 17:48
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

jsnb,
Спасибо. А я просто не сообразил как сделать без массива направления. если подскажете буду благодарен.
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2014, 17:56
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от NuclleaR Посмотреть сообщение
jsnb,
Спасибо. А я просто не сообразил как сделать без массива направления. если подскажете буду благодарен.
Делаешь 2 переменных отвечающих за направления смещения по x и y.
Пусть это будут dx и dy соответственно. Если подошли к левой границе по x делаем dx положительным, а если к правой, то отрицательным. С dy аналогично. Соответственно на каждом шаге прибавляем dx и dy к текущим координатам.
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2014, 17:59
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

Сообщение от jsnb Посмотреть сообщение
Делаешь 2 переменных отвечающих за направления смещения по x и y.
Пусть это будут dx и dy соответственно. Если подошли к левой границе по x делаем dx положительным, а если к правой, то отрицательным. С dy аналогично. Соответственно на каждом шаге прибавляем dx и dy к текущим координатам.
Спасибо попробую
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите з условием I_nub Events/DOM/Window 13 12.03.2013 16:53
Помогите разобраться!!! Greendumb Общие вопросы Javascript 8 19.08.2010 14:04
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50
Помогите написать скрипт для корзины Deep Элементы интерфейса 1 19.06.2010 14:46
Помогите новичку с выпадающим списком interest Элементы интерфейса 5 19.05.2010 13:15