форсировать - PullRequest
       10

форсировать

1 голос
/ 09 мая 2011

У меня есть функция, которая состоит из двух основных частей (я назову их A и B). Часть B должна быть запущена, когда часть A полностью завершена с изменениями компоновки. Тем не менее, нет сигнала «часть A выполнена», и поэтому я вызывал validateNow () до запуска части B. Это работает, но кажется ужасно неэффективным - мне было интересно, есть ли какие-то другие приемы, чтобы принудительно принять меры или что-то в этом роде, или я застрял. спасибо!

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Вы можете вызвать часть B из updateDisplayList().

. Для этого вам нужно ввести флаг:

private var partAPerformed:Boolean;

Затем в функции после завершения части A:

partAPerformed = true;
invalidateDisplayList();

А потом:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if (partAPerformed)
    {
        // Part B
        partAPerformed = false;
    }
}
1 голос
/ 09 мая 2011

Некоторый код был бы полезен, потому что мне трудно представить ситуацию, которую вы описываете.Я имею в виду, я предполагаю, что выполняемые операции являются асинхронными, потому что очевидно, что все синхронное сделало бы синхронизацию не проблемой.Что именно делает часть А?

Тем временем, однако, вы всегда должны думать об асинхронных операциях с точки зрения событий и слушателей событий.Так что имейте две функции с одним прослушиванием события, отправляемого операциями в другом, вместо того, чтобы пытаться сделать одну функцию, которая обрабатывает все.

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