Не знаю кому это может пригодиться, но пусть будет
Вот такой код в игре:
settingsMenu.onChangeControl(() => {
nextControl()
control.destroy()
control = game.add(addControl())
})по нажатию пеняем глобальный CONTROL, старый удаляем, новый создаём
И немного поменял функцию адаптации:
export default function adaptation() {
let addControl
let makeJoystick
let makeSwipe
let makeKeyboard
let resolution = width() / height()
window.CONTROLS = ["swipe", "joystick", "keyboard"]
window.nextControl = function() {
CONTROL = CONTROLS[(CONTROLS.indexOf(CONTROL) + 1)
% CONTROLS.length]
}
makeJoystick = function(){
return make([
joystickComp(),
circle(108),
pos(width() / 2, height() / 1.2),
fixed(),
])
}
makeSwipe = function(){
return make([
swipeComp(),
])
}
makeKeyboard = function(){
return make([
keyboardComp(),
])
}
if (isTouchscreen()) {
if (resolution < 1) {
window.CONTROL = "joystick"
}
else {
window.CONTROL = "swipe"
}
}
else {
window.CONTROL = "keyboard"
}
addControl = function() {
if (CONTROL === "joystick") {
return makeJoystick()
}
else if (CONTROL === "swipe") {
return makeSwipe()
}
else if (CONTROL === "keyboard") {
return makeKeyboard()
}
}
return addControl
}Можно конечно сделать лучше без использования глобального контекста window
Возможно потом переделаю если нужно будет, а пока так