2012-06-15 1 views
0

У меня есть приложение, которое отображает изображения. Он изменяет их размеры на основе поворота экрана, обычно устанавливая «picwidth = screen.width», где «picwidth» является атрибутом, к которому привязана ширина каждого изображения.Размеры экрана не обновляются во времени для привязок, Flex Mobile

Поэтому у меня есть несколько функций, аналогичных:

protected function changeOrientation(e:StageOrientationEvent):void 
       { 
        picwidth = screen.width; 
        picheight = screen.width*1.467; 
       } 

Я также пытался сделать это с переменной самого объекта:

protected function changeOrientation(e:StageOrientationEvent):void 
       { 
        img.width = screen.width; 
        img.height = screen.width*1.467; 
       } 

и в эмуляторе, эти функции работают правильно. Но на устройстве «screen.width» всегда, кажется, захватывает значение перед изменением ориентации, давая размеры, которые прямо противоположны тому, что мне нужно.

ПРИМЕЧАНИЕ: это происходит не только с изображениями, это происходит с контейнерами групп, TextAreas, все, размеры которых зависят от размеров экрана.

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

Есть ли хорошее решение?

ответ

1

Эта проблема была решена с помощью:

изменения слушателя событий из:

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, changeView); 

к:

stage.addEventListener(Event.RESIZE, changeView); 

и передавая Event вместо stageOrientationEvent к каждому из методов обработчиков ,

Работал в каждом случае, в котором я нуждался. Это позор, что единственное, что может сделать StageOrientationEvent.ORIENTATION_CHANGE, может быть превзойдено более общей функцией.