«Переменная * не определена» в неотразимой части кода? - PullRequest
1 голос
/ 08 декабря 2010

Я довольно новичок во Flash.У меня есть сцена с простой кнопкой;Instance Name - это init.Мой .as сценарий (MainTimeline) доступен извне со сцены:

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

Я связываюсь с .asустановка свойства stage, Class, на MyFlash_fla.MainTimeline.Ярлык кнопки init установлен в свойствах на «ENTER».

Однако я сталкиваюсь с этой ошибкой: ReferenceError: Error #1065: Variable init is not defined. at MyFlash_fla::MainTimeline/__setProp_init_Scene1_Layer1_0() at MyFlash_fla::MainTimeline().Я никогда не видел и не могу найти __setProp_init_Scene1_Layer1_0() ..

Это мой текущий код:

    function MainTimeline(){
        this.init.addEventListener(MouseEvent.MOUSE_UP, begin);
    }
    function begin(event:Event){
        addFrameScript(0, frame1);
    }

Функциональность проста;когда MOUSE_UP, выполнить begin.Кажется, все работает нормально, за исключением упомянутой ошибки, которая вызывает некоторые проблемы с загрузкой моих пресетов, которые я установил в свойствах.Ярлык вместо ENTER, как я его установил, меняется на Label, как если бы я его не устанавливал.Я считаю, что это как-то связано с этой ошибкой, но я понятия не имею, как получить доступ к этой области или как это исправить.Кажется, что в настоящее время вероятным обходным путем является установка метки в коде, что я предпочитаю не делать, так как планирую добавить больше кнопок, флажков и так далее, и это станет проблемой для просмотра.Кто-нибудь есть идеи, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 23 января 2013

Для других читателей приведенная выше ошибка, вероятно, означает, что вам нужно перейти к

  • Файл / Параметры публикации / Настройки AS3.0 (выглядит как гаечный ключ в правом верхнем углу)

, а затем установите «Автоматически объявлять экземпляры сцены» на флажок.Кроме того, снимите флажок «строгий режим» на случай, если он проверен и файл продолжает выдавать ошибки.

0 голосов
/ 08 декабря 2010

Это означает, что ваш экземпляр init не создан, __setProp_init_Scene1_Layer1_0 () находится за кулисами, не беспокойтесь об этом.

Возможно, вам придется либо объявить переменную init

     //assuming your button is a MovieClip
     private var init:MovieClip;

     function MainTimeline()
     {
         init.addEventListener(MouseEvent.MOUSE_UP, begin);
     }

или вместо непосредственного добавления его на сцену свяжите его с собственным классом, используя «Экспорт для Actionscript» на панели свойств, и добавьте его на стороне кода. Я обычно предпочитаю такой подход, поскольку он дает вам больше контроля над вашими экранными объектами. Конечно, поскольку он не добавлен на сцену, вам не понадобится имя экземпляра!

     private var button:MovieClip = new init();

     function MainTimeline()
     {
         button.addEventListener(MouseEvent.MOUSE_UP, begin);
     }

Что касается примечания, "init" может быть не лучшим именем для кнопки, поскольку он часто используется в классах как имя метода ...

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