Тайна типа ошибки Adobe Animate Javascript - не удается решить
Я разрабатываю простое приложение в Animate, работающее в режиме Canvas. На сцене есть несколько кнопок видеоклипа с именами экземпляров "p1", "p2",.... до "p19". Нажатие кнопки приведет к отображению другого фрагмента ролика partOverlay и переходу к кадру на его временной шкале.
Все работает нормально, когда кодируются только от p1 до p13, как показано ниже. Но p14 дает ошибку TypeErp: this.p14 не определено. То же самое делают другие случаи после p13. Я трижды проверил имена и синтаксис, и все выглядит хорошо. Когда я копирую кнопку p14 и код в новый документ Animate, он работает нормально.
Я потратил несколько часов на этот поиск в Интернете и тестирование, и я в своем уме. Любая помощь приветствуется.
образец кода:
this.p13.cursor = "pointer";
this.p13.addEventListener("click", GoToPartFrame2.bind(this, "p13"));
this.p14.cursor = "pointer";
this.p14.addEventListener("click", GoToPartFrame2.bind(this, "p14"));
function GoToPartFrame2(view)
{
this.partOverlay.gotoAndStop(view);
this.partOverlay.visible=true;
}
1 ответ
Я только что обнаружил что-то странное. Все кнопки являются экземплярами одной кнопки, которую я клонировал и давал новые имена экземпляров для создания новых кнопок. У меня были разные наборы кнопок на трех разных ключевых кадрах временной шкалы - все копии оригинальной кнопки. Когда я закомментировал код для кнопки с помощью TypeError и протестировал файл, каким-то образом на этой кнопке все еще работал слушатель, и он активировал функцию от какой-то другой кнопки на другом ключевом кадре. Обе кнопки имели уникальные имена экземпляров, что еще более загадочно.
Я предположил, что между внутренним именем кнопки и именем экземпляра, который я ей дал, был конфликт имен. Animate игнорировал имя экземпляра и применял другое имя внутреннего объекта. По догадке я создал новые оригинальные кнопки для каждого ключевого кадра. Другими словами - каждый ключевой кадр имеет набор кнопок, клонированных из уникальной главной кнопки для этого ключевого кадра. Теперь все работает как надо. Вроде глупо и не интуитивно понятно, что так должно работать... программа должна учитывать уникальные имена экземпляров, которые я применяю в качестве основных идентификаторов для объектов, независимо от того, на каком ключевом кадре находится клонированная кнопка. Много потерянного времени.