Как исправить ошибку «TypeError: Error #1009» в ActionScript3.0 Adobe Animate

Я настраиваю кнопку на первом кадре, при нажатии на которую пользователь перейдет на второй кадр, используя этот код:

    stop();

    Btn_1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame_2);

     function fl_ClickToGoToAndPlayFromFrame_2(event:MouseEvent):void
     {
 gotoAndPlay(2);
     }

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

    var myTimer:Timer = new Timer(1000,60); // every second for 60 seconds
    myTimer.addEventListener(TimerEvent.TIMER, onTimer);
    myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
    myTimer.start();

    function onTimer(e: TimerEvent):void {
countdown_text.text = String(myTimer.repeatCount - myTimer.currentCount);
     }


     function onComplete(e: TimerEvent):void{
     gotoAndStop(3);
     }

дело в том, что после отладки продолжает появляться сообщение TypeError: Error #1009. Я знаю, что ошибка в строке 7 второго кода, но я понятия не имею, что с ней не так. Пожалуйста, помогите!

Вы определили countdown_text? Ошибка 1009 относится к нулевому объекту, поэтому, если countdown_text имеет значение null, вы не можете получить доступ к его свойствам (т.е. тексту)

Joe Taras 27.03.2019 09:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
257
1

Ответы 1

Я должен увидеть ваш исходный файл, но это, скорее всего, связано с тем, что countdown_text недоступен в этом кадре. Описание ошибки: «Не удается получить доступ к свойству или методу нулевой ссылки на объект», что означает, что он не может найти ссылку, которая является «countdown_text». Очень и очень плохая практика писать AS прямо во фреймах. Преобразуйте код в класс и назначьте его как класс документа. Вы можете найти документацию Adobe для класса документов здесь: https://helpx.adobe.com/animate/using/actionscript-publish-settings.html

Это не обязательно плохая практика. Для какого-то простого и понятного приложения нет абсолютно никакой необходимости впадать в крайность и писать все в классах. Лучшие практики работают только в той мере, в какой они служат вам.

user1234567 02.04.2019 09:24

Правда, хотя мне это совсем не кажется. Настоящая ловушка, повторно запускающая таймеры всякий раз, когда точка воспроизведения перемещается на кадр 2. Кроме того, кажется, что пользователь выиграет от понимания использования класса документа, который сделает то, что он пытается сделать, намного проще и без ошибок. Вероятно, ему даже не пришлось бы размещать здесь вопрос с более чистым кодом.

PippoApps.com 02.04.2019 13:28

Я думаю, что это действительно сводится к тому, насколько сложным является проект. Для простого постраничного приложения, которое выполняет OP, количество сэкономленного времени и снижение сложности использования временной шкалы намного перевешивают небольшие потери памяти, такие как повторное создание таймера. Я тоже за использование классов, но иногда уродливое решение меньше и понятнее. Хотя я понимаю, откуда вы.

user1234567 02.04.2019 14:05

Другие вопросы по теме