подскажите как реализовать перемещение элемента по 8 направлениям, стрелками клавиатуры. как отследить 1 нажатую клавишу я знаю, а вот как поймать нажатие "вверх"+"вправо" чето не соображу( может какой-нибудь плагин готовый кто знает? Код (Text): function move_up(event){ if(event.keyCode == 38){ $("#cursor").offset(function(i, val){ if(val.top > 21) return {top:val.top - 1, left:val.left}; }); } }
Вообще, JS умеет только при нажатии клавиши получать инфу о том, нажат ли shift, ctrl и тому подобные кнопки. То есть Ctrl + key или Alt + Shift + Key - обработать можно. А вот Key + Key (например две стрелки) - нельзя. Но если очень хочется - то можно. Только это несколько сложнее. Я бы делал так: При нажатии (onkeypress) кнопки - сохраняешь в переменную булева типа статус клавиши (true - нажато). На onkeyup - соответственно, также (false - не нажато). Таким образом у тебя в скрипте будет 4 переменных: Код (Text): var keyUp = false; var keyDown = false; var keyLeft = false; var keyRight = false; В обработчике onkeypress также, помимо сохранения статуса клавиши в переменную пишешь уже нужный функционал, но тут уже оперируешь не с кодом нажатой клавиши, а со своими переменными статуса.
ок, спасибо! разобрался! следующий вопрос, создаю объект star() Код (Text): function _star(color, speed, num){ this.x = Math.round(Math.random() * getScreenSize(SCREEN_X)); this.y = Math.round(Math.random() * getScreenSize(SCREEN_Y)); this.color = color; this.speed = speed; this.num = num; this.iy = true; } как создать множество объектов тоесть чтобы как то так star[0] итд
Код (Text): var star = new Array(first_elem, second_elem, ...) // или var star = new Array(); star[star.length] = first_elem; star[star.length] = second_elem; star[star.length] = third_elem; // etc... var star = new Array(); var i = 0; for(i = 0; i < 100; ++i) star[i] = new Star(); // ... var star = new Array(); while(condition) star[star.length] = new Star();