Event.ENTER_FRAME выполняется до визуализации кадра - PullRequest
0 голосов
/ 09 декабря 2011

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

обработчик функции Event.ENTER_FRAME?

Мне не нравится идея использования Timer, потому что мой код выполняется до того, как фрейм

полностью загружен.

Вот пример:

addEventListener(Event.ENTER_FRAME, frameEnterEventHandler);
gotoAndPlay("Frame2");

private function frameEnterEventHandler(e:Event):void
{
    myMovieClip.visible = false;
}

Этот код выдает ошибку «Не удается получить доступ к свойству или методу пустой ссылки на объект». Потому что myMovieClip, который является объектом мувиклипа в кадре 2, еще не отображается.

поэтому я должен сделать следующее

private function frameEnterEventHandler(e:Event):void
{
    setTimeout(blaBla, 100);
}

private function blaBla():void
{ 
    myMovieClip.visible = false;
}

что бы я хотел сделать, если это возможно

private function frameRenderCompleteEventHandler(e:Event):void
{
  myMovieClip.visible = false;
}

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Чтобы обойти вашу проблему, просто сделайте это:

private function frameEnterEventHandler(e:Event):void
{
    if (myMovieClip) myMovieClip.visible = false;
}

Ваш обработчик ENTER_FRAME будет по-прежнему вызываться для каждого кадра, но для клипа будет установлен невидимый, только если он действительно существует. И, конечно же, вы можете использовать один и тот же прием для таймера или отложенного вызова метода.

Однако вы должны либо: а) не использовать ENTER_FRAME для такого рода функций, либо б) удалить обработчик событий сразу после того, как MovieClip был установлен как невидимый, потому что в противном случае ваш метод будет вызываться снова и снова в каждом кадре, даже если это долго служило своей цели.

0 голосов
/ 09 декабря 2011

Это зависит от версии Flash Player. В Flash 9 кадр будет отображаться до ввода кадра В Flash 10+ кадр отображается после.

Ознакомьтесь с этим сообщением в блоге для получения информации о методах, которые позволят вам определить, что ваши объекты поступили на сцену без затрат на прослушиватель события enter frame: http://www.developria.com/2010/04/combining-the-timeline-with-oo.html

0 голосов
/ 09 декабря 2011

Взгляните на недокументированный метод addFrameScript:

http://www.ryac.ca/blog/2008/05/the-undocumented-addframescript-method/

(отсюда вопрос: остановка на последнем кадре (вспышка) )

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