массив объектов для панели навигации html5 canvas - PullRequest
0 голосов
/ 17 мая 2018

У меня есть анимация html5 Canvas, которую я делаю в Adobe Animate и настраиваю с помощью некоторого кода.

У меня есть часть анимации, которая будет похожа на комбинированный список со всеми ссылками для навигации по различнымкадры.Дело в том, что я не хочу создавать кучу EventListener для многих кнопок, потому что по своему опыту я знаю, что это не так хорошо работает.Поэтому я пытаюсь придумать более креативное решение.Это моя идея.

  1. Создать массив, который будет содержать все кнопки.
  2. Назначение переменной для каждого целевого кадра.
  3. Создание цикла for сфункция внутри, которая назначает слушателя выбранной кнопке, а затем направляет ее на нужный кадр (переменная)

Это то, что я получил до сих пор (не очень)

    var combobox = [this.btncasco , this.btnbanyera , this.btnLumbrera , this.btnproapopa, this.btnestriborbabor ];


for (var i=0; i<combobox.length; i++) {
var clipcasco = gotoAndStop(0);
var clipbanyera = gotoAndStop(2);
var cliplumbera = gotoAndStop(4);
var clipproapoa = gotoAndStop(6);
var clipestriborbabor = gotoAndStop(8);


    }

Это было бы возможно?

1 Ответ

0 голосов
/ 18 мая 2018

В вашем примере вы просто присваиваете результат gotoAndStop (без области видимости, так что, скорее всего, вы получаете ошибку в консоли)

Я думаю, что вы ищете что-то вроде этого:

for (var i=0; i<combobox.length; i++) {

  // This is kind of complex, but if you just reference "i" in your callback
  // It will always be combobox.length, since it references the value of i
  // after the for loop completes variable.
  // So just store a new reference on your button to make it easy
  combobox[i].index = i*2; // x2 lines up with your code 0,2,4,etc.

  // Add a listener to the button
  combobox[i].on("click", function(event) {
    // Use event.target instead of combobox[i] for the same reason as above.
    event.target.gotoAndStop(event.target.index);
  }

}

У вас может быть та же проблема, что и у другого поста StackOverflow, где кнопка не определена (проверьте консоль).На самом деле существует ошибка в экспорте Animate, когда дочерние элементы клипа не немедленно доступны.Чтобы обойти это, вы можете позвонить this.gotoAndStop(0); в начале, чтобы заставить его обновить дочерние элементы.

...