Сценарий действия - ошибка типа: ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на пустой объект - PullRequest
0 голосов
/ 16 февраля 2012

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

У меня есть 1 файл класса с именемmain, который используется для всех сценариев действий, программа работает нормально, пока я не добавлю прослушиватели событий для 2 кнопок на 2 кадре, а затем получу сообщение об ошибке TypeError:

Ошибка # 1009: Не удается получитьсвойство или метод ссылки на пустой объект. \ Desktop \ weather \ Main.as: 17]

Сеанс отладки завершен.

Строка 17 сразу после функции остановки

    package 
     {

    import flash.display.*;
    import flash.events.*;


    public class Main extends MovieClip
    {


        public function Main()
        {
            // constructor code
            Play_btn.addEventListener(MouseEvent.CLICK, playClicked);
            stop();
            back_btn.stage.addEventListener(MouseEvent.CLICK, backClicked);
            forward_btn.stage.addEventListener(MouseEvent.CLICK,forwardClicked);


        }
        function playClicked(evt:MouseEvent):void
        {

            nextFrame();
        }
        function backClicked(evt:MouseEvent):void
        {
            if (currentFrame == 1)
            {
                gotoAndStop(totalFrames);
            }
            else
            {
                prevFrame();
            }
        }
        function forwardClicked(evt:MouseEvent):void
        {
            if (currentFrame == totalFrames)
            {
                gotoAndStop(1);
            }
            else
            {
                nextFrame();
            }
        }



    }

}
/*
back_btn.addEventListener(MouseEvent.CLICK, backClicked);
forward_btn.addEventListener(MouseEvent.CLICK, forwardClicked);
stop();

function backClicked(evt:MouseEvent):void
{
if(currentFrame == 1)
{
gotoAndStop(totalFrames);
}
else
{
prevFrame();
}
}

function forwardClicked(evt:MouseEvent):void
{

if(currentFrame == totalFrames)
{
gotoAndStop(1);
}
else
{
nextFrame();
}
}

1 Ответ

0 голосов
/ 16 февраля 2012

Попробуйте:

function Main()
{
  if(!stage){
    addEventListener(flash.events.Event.ADDED_TO_STAGE, onAddedToStage);
  }
  else{
    onAddedToStage(null);
  }
}
function onAddedToStage(e:Event):void
{
  if(hasEventListener(flash.events.Event.ADDED_TO_STAGE)){
    removeEventListener(flash.events.Event.ADDED_TO_STAGE, onAddedToStage);
  }

  Play_btn.addEventListener(MouseEvent.CLICK, playClicked);
  stop();
  back_btn.stage.addEventListener(MouseEvent.CLICK, backClicked);
  forward_btn.stage.addEventListener(MouseEvent.CLICK,forwardClicked);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...