Алгоритм, чтобы определить, полностью ли виден компонент во Flex? - PullRequest
2 голосов
/ 10 ноября 2008

Существует ли встроенный способ определения того, является ли компонент полностью видимым в приложении Flex (т. Е. Не закадровый ли тот или другой). Если нет, то как мне поступить с фигуркой?

Я хочу показать или скрыть дополнительные кнопки «следующий» и «предыдущий», если мои основные кнопки «следующий» и «предыдущий» отключены.

Какое событие лучше всего послушать «пересчитать»? stage.resize

спасибо!

Ответы [ 2 ]

1 голос
/ 11 ноября 2008

здесь - метод для вычисления, если компонент находится в пределах границ стадии, однако он не будет сообщать вам, скрыт ли компонент другим компонентом, или если компонент скрыт, потому что находится за пределами другой контейнер.

public function isComponentWithinStage(c:UIComponent):Boolean {
    var tl:Point = c.localToGlobal(new Point(0, 0));
    var br:Point = c.localToGlobal(new Point(c.width, c.height));

    //are we off the left or top of stage?
    if ( tl.x < 0 || tl.y < 0 ) {
        return false;
    }

    var stage:Stage = Application.application.stage;

    //off the right or bottom of stage?
    if ( br.x > stage.width || br.y > stage.height ) {
        return false;
    }

    return true;
}
0 голосов
/ 10 ноября 2008

Не могли бы вы указать особенности видимого предмета и контейнера (ов), в котором он находится? Это вопрос необходимости прокручивать какой-то контейнер, чтобы добраться до кнопок? Или дело в том, что кто-то вытащил дочернее окно flexlib: MDICanvas частично за пределы экрана?

Я думаю, что это произойдет, если положение компонента x, y превышает ширину и высоту его контейнера (и так далее до родительских контейнеров, пока вы не достигнете своего приложения верхнего уровня.)

...