Как я могу определить логическое значение на основе ширины этапа? - PullRequest
0 голосов
/ 14 февраля 2011

Я пытаюсь создать динамический макет для гибкого приложения.

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

    if(this.parentApplication.width<950)
        {
            currentState = "wide"   
        }else{
            currentState = "narrow"
        }

Однако я не могу просто указать это в тегах fx: Script, так каков наилучший способ реализовать это?enterFrame="application1_enterFrameHandler(event)" работает, но я не могу помочь, но чувствую, что это, вероятно, излишне и ужасно требовательно к вычислениям (а мое приложение работает достаточно медленно, ожидайте один или два вопроса, касающихся эффективности гибкого устройства в ближайшем будущем).

Спасибо

Джош

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

действительно ожидание изменения размера будет дешевле и элегантнее.в as3 класс S больше не существует и заменяется на s .синтаксис также может не работать (as3 не очень любит анонимные функции :)).

вам понадобится этап, чтобы быть доступным ( проверьте это , например) и затем поместитечто-то вроде:

[...when stage is available...]
stage.addEventListener( Event.RESIZE, onResizeHandler );

onResizeHandler( null );//calling the method with an null event to force a first check
[...other instructions...]

, а затем

private function onResizeHandler( e:Event ):void
{
    currentState = ( stage.stageWidth < 950 ) ? 'wide' : 'narrow';
    //or testing a given object's width rather than the stage.
}
0 голосов
/ 14 февраля 2011

Вы можете попробовать использовать обработчик событий.

myListener = new Object();
myListener.onResize = function() {
  currentState = (obj.parentApplication.width<950) ? 'wide' : 'narrow';
};
Stage.addListener(myListener);

Извините, мой ActionScript немного заржавел, это было давно, но вам, вероятно, придется изменить obj.parentApp..., насколько я знаю, использование здесь this будет ссылаться на аргументы, обычно передаваемые через функция обратного вызова.

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

...