За последние 24 часа нас посетили 16566 программистов и 1681 робот. Сейчас ищут 966 программистов ...

перемещение элемента стрелками клавиатуры

Тема в разделе "JavaScript и AJAX", создана пользователем qwert_ukg, 4 июн 2012.

  1. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    подскажите как реализовать перемещение элемента по 8 направлениям, стрелками клавиатуры.
    как отследить 1 нажатую клавишу я знаю, а вот как поймать нажатие "вверх"+"вправо" чето не соображу(
    может какой-нибудь плагин готовый кто знает?

    Код (Text):
    1. function move_up(event){
    2.     if(event.keyCode == 38){
    3.         $("#cursor").offset(function(i, val){
    4.             if(val.top > 21) return {top:val.top - 1, left:val.left};
    5.         });
    6.     }
    7. }
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Вообще, JS умеет только при нажатии клавиши получать инфу о том, нажат ли shift, ctrl и тому подобные кнопки. То есть Ctrl + key или Alt + Shift + Key - обработать можно. А вот Key + Key (например две стрелки) - нельзя. Но если очень хочется - то можно. Только это несколько сложнее. Я бы делал так: При нажатии (onkeypress) кнопки - сохраняешь в переменную булева типа статус клавиши (true - нажато). На onkeyup - соответственно, также (false - не нажато). Таким образом у тебя в скрипте будет 4 переменных:
    Код (Text):
    1. var keyUp = false;
    2. var keyDown = false;
    3. var keyLeft = false;
    4. var keyRight = false;
    В обработчике onkeypress также, помимо сохранения статуса клавиши в переменную пишешь уже нужный функционал, но тут уже оперируешь не с кодом нажатой клавиши, а со своими переменными статуса.
     
  3. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    ок, спасибо! разобрался!
    следующий вопрос, создаю объект star()
    Код (Text):
    1. function _star(color, speed, num){
    2.    
    3.         this.x = Math.round(Math.random() * getScreenSize(SCREEN_X));
    4.         this.y = Math.round(Math.random() * getScreenSize(SCREEN_Y));
    5.         this.color = color;
    6.         this.speed = speed;
    7.         this.num = num;
    8.        
    9.         this.iy = true;
    10.     }
    как создать множество объектов тоесть чтобы как то так star[0] итд
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (Text):
    1. var star = new Array(first_elem, second_elem, ...)
    2. // или
    3. var star = new Array();
    4. star[star.length] = first_elem;
    5. star[star.length] = second_elem;
    6. star[star.length] = third_elem;
    7. // etc...
    8. var star = new Array();
    9. var i = 0;
    10. for(i = 0; i < 100; ++i)
    11.     star[i] = new Star();
    12. // ...
    13. var star = new Array();
    14. while(condition)
    15.     star[star.length] = new Star();
     
  5. qwert_ukg

    qwert_ukg Активный пользователь

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    спасибо, именно так я и сделал