Javascript, объединяющий параметр функции и существующие переменные часть 2 - PullRequest
0 голосов
/ 27 ноября 2018

Поскольку у меня есть ответ на мой предыдущий вопрос, я подумал, что проще создать новый вопрос:

Часть первая: ответил!Спасибо!

Я создаю фрагмент кода, который повторяется для нескольких переменных, и мне было интересно, не проще ли создать для него функцию, а в функции «динамически» настроить переменную, котораяМне нужно изменить.

Пример: я создаю 31 дверь, которая либо открыта, либо закрыта.Итак, у меня есть:

var door1State = 0;
var door2State = 0;
...
var door31State = 0;

Мой вопрос, возможно ли создать функцию, в которой я передаю номер двери в качестве параметра, например:

function openDoor(doorNumber) {
   door+doorNumber+State = 1;
}

Поэтому, когда я связываюПрислушиваясь к двери, мне не нужно каждый раз писать анонимные функции.

Надеюсь, мое объяснение понятно, если нет, я с удовольствием уточню еще немного.

Спасибо зазаранее!

Часть вторая: ответ на вопрос

Спасибо за все полезные ответы, у меня есть следующий вопрос по этой проблеме.Я работаю с Blippar, и у них есть API, который работает довольно легко, но теперь мне нужно анимировать двери, чтобы открыть.Сначала я объявил «спрайтов» в «сцене», а затем мне нужно анимировать определенные части

deur1.onTouchEnd = function() {
if (door1Openable == 1) {
  deur1.animate().rotationY(180).scale(600,360).translation(0,0,95).duration(1000);
  deur1text.animate().rotationY(0).scale(600,360).translation(0,0,100).duration(1000);

  setTimeout(function(){
    door1State = 1;
  }, 1500);
} else {
  return false;
}

Это происходит 31 раз, для 31 двери.Мой вопрос: как было бы проще преобразовать это в функцию с параметрами?Единственными обязательными параметрами являются «номер двери», «позиция х» и «позиция у».

Я пробовал что-то подобное, что, очевидно, не сработало, но мне трудно найти правильныйспособ сделать это.

function() openDoor(doorNumber,xPos,yPos) {
if ('door'+doorNumber+'Openable' == 1) {
  'deur'+doorNumber.animate().rotationY(180).scale(600,360).translation(xPos,yPos,95).duration(1000);
  'deur'+doorNumber+'text'.animate().rotationY(0).scale(600,360).translation(xPos,yPos,100).duration(1000);

  setTimeout(function(){
    'door'+doorNumber+'State' = 1;
  }, 1500);
} else {
  return false;
}

Опять же, надеюсь, это достаточно ясно, я в основном пытаюсь динамически использовать переменные внутри функции с помощью параметров.

API непо какой-то причине примите метод window [], он запускается в приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...