Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 2

Как сделать переключение управления с помощью javascript и html?

17.08.2024, 23:07. Показов 472. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, я пытался сделать смену управления через настройки на js, но почему-то не получается. Может кто-то подсказать в чём ошибка? Снизу приведу части кода, которые ответственны за это. Заранее спасибо!
HTML:
HTML5
1
2
3
4
5
6
7
<div class="dropdown">
    <button onclick="control_change()" class="dropbtn">Настройки управления</button>
    <div id="myDropdown" class="dropdown-content">
      <a onclick="ws_change()" id="ws_change">Кнопки W, S</a>
      <a onclick="arrows_change()" id="arrows_change">Стрелки вверх, вниз</a>
    </div>
  </div>
JS:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
var heldDown = {}; 
this.move = function(keyCode_start) {
var nextY = this.y;
if(keyCode_start == 40) {
nextY += 5;
this.speedModifer = 1.5;
} else if(keyCode_start == 38) {
nextY += -5;
this.speedModifier = 1.5;
} else {
this.speedModifier = 0;
}
nextY = nextY < 0 ? 0 : nextY;
nextY = nextY + this.height > 900 ? 900 - this.height : nextY;
this.y = nextY;
};
}
for(var keyCode_start in heldDown) {
player.move(keyCode_start);
}
function control_change() {
  document.getElementById("myDropdown").classList.toggle("show");
}
window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {
    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}
window.addEventListener("keydown", function(keyInfo) { heldDown[event.keyCode_start] = true; }, false);window.addEventListener("keyup", function(keyInfo) { delete heldDown[event.keyCode_start]; }, false);
tick(); 
function  toggle(ws_change){
  ws_change.addEventListener.innerHTML('click', () => {
    keyCode_start.disabled=true;
    this.move = function(keyCode_ws) {
      var nextY = this.y;
      if(keyCode_ws == 87) {
      nextY += 5;
      this.speedModifer = 1.5;
    } else if(keyCode_ws == 83) {
    nextY += -5;
    this.speedModifier = 1.5;
  } else {
  this.speedModifier = 0;
}
nextY = nextY < 0 ? 0 : nextY;
nextY = nextY + this.height > 900 ? 900 - this.height : nextY;
this.y = nextY;
for(var keyCode_ws in heldDown) {
  player.move(keyCode_ws);
}
window.addEventListener("keydown", function(keyInfo) { heldDown[event.keyCode_ws] = true; }, false);window.addEventListener("keyup", function(keyInfo) { delete heldDown[event.keyCode_ws]; }, false);
tick();
};
});
};
function toggle(arrows_change){
  arrows_change.addEventListener.innerHTML('click', () => {
    keyCode_start.disabled=true;
    this.move = function(keyCode_arrows) {
      var nextY = this.y;
      if(keyCode_arrows == 40) {
      nextY += 5;
      this.speedModifer = 1.5;
    } else if(keyCode_arrows == 38) {
    nextY += -5;
    this.speedModifier = 1.5;
  } else {
  this.speedModifier = 0;
}
nextY = nextY < 0 ? 0 : nextY;
nextY = nextY + this.height > 900 ? 900 - this.height : nextY;
this.y = nextY;
for(var keyCode_arrows in heldDown) {
  player.move(keyCode_arrows);
}
window.addEventListener("keydown", function(keyInfo) { heldDown[event.keyCode_arrows] = true; }, false);window.addEventListener("keyup", function(keyInfo) { delete heldDown[event.keyCode_arrows]; }, false);
tick();
};
});
};
</script>
Задумка в том, чтобы при запуске игры было изначально управление на стрелочки, но после выбора управления в выпадающем списке, стартовое управление на стрелочки отключалось и включалось другое управление.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2024, 23:07
Ответы с готовыми решениями:

как сделать переключение страниц и слайдер HTML и CSS
как сделать переключение страниц слайдер и загрузку как на этом сайте http://www.microsoft.com/ru-ru/events/html5camp/ желательно чтоб был...

Как сделать сброс фильтра с помощью кнопки на JavaScript?
Всем привет! Есть форма: &lt;div class=&quot;vacancy_form&quot;&gt; &lt;form name=&quot;vacancy&quot; method=&quot;post&quot;...

Как с помощью JavaScript можно сделать фиксированный фон?
Как с помощью JavaScript можно сделать фиксированный фоновый рисунок? С помощью CSS знаю, а как с помощью именно JavaScript?

1
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
20.08.2024, 11:36
Цитата Сообщение от malasi Посмотреть сообщение
в чём ошибка
Правильнее будет сказать ошибки, ибо их тут навалом:
У вас есть две функции с названием toggle, что вызывает конфликт.
В строках, где вы устанавливаете обработчики событий для ws_change и arrows_change, вы используете addEventListener.innerHTML(), что неверно. Правильно будет просто использовать addEventListener().
Вы используете event.keyCode_ws и event.keyCode_arrows, что неверно. Это должно быть keyInfo.keyCode.
Чтобы правильно использовать this в обработчике событий, вам нужно сделать сохранение ссылки на this или использовать стрелочную функцию.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2024, 11:36
Помогаю со студенческими работами здесь

Как с помощью JavaScript сделать подсвечивание Advanced Button?
Всем привет! Проблема следующая: Как с помощью JavaScript сделать подсвечивание Advanced Button (измененме фона при наведении курсора)....

Если одну и ту же задачу можно сделать и с помощью CSS и с помощью JavaScript в чем ее луче написать и почему?
Скажите а если одну и ту же задачу можно же сделать и с помощью css и с помощь js например всплывающею подсказку в чем ее луче написать и...

arbor.js Javascript вывод html ссылки, как сделать?
есть js code &lt;html&gt;&lt;!DOCTYPE html&gt; &lt;html &lt;?php language_attributes(); ?&gt;&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; &lt;body &lt;?php body_class();...

Записать в файл HTML код страницы, которая генерируется с помощью JavaScript
Всем привет есть ли возможность записать в файл HTML код страницы, которая генерируется с помощью JavaScript? Делал так: Dim...

Как сделать чтобы Internet Explorer при открытии html файлов содержащих javascript не спрашивал разрешение
К примеру у нас есть html страница, которая содержит javascript. Пускай это будет &lt;script type=&quot;text/javascript&quot;&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru