Flex 4.6 - Определение размеров экрана для мобильных устройств - systemManager.screen.width и Stage.width - PullRequest
1 голос
/ 13 декабря 2011

Для мобильных Flex / Flash Builder лучше определять размеры экрана с помощью systemManager.screen.* или Stage.* - и почему?

Ответы [ 2 ]

5 голосов
/ 03 ноября 2012

В большинстве случаев более надежно использовать FlexGlobals.topLevelApplication.width и FlexGlobals.topLevelApplication.height.

2 голосов
/ 13 декабря 2011

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

Чтобы получить эту информацию, я бы привязался к Flex Framework и использовал свойства unscaledWidth и unscaledHeight, переданные в метод updateDisplayList ().

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


Это один из способов размера и размещения метки внутри updateDisplayList его контейнера:

protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
 super.updateDisplayList(unscaledwidth, unscaledHeight);
 // first position it
 // you could also use this.myLabel.move(x,y) method to position the element
 this.myLabel.x = 0;
 this.myLabel.y = 0;

 // then size it
 // sizing to 100% height/width of container
 this.myLabel.height = unscaledHeight;
 this.myLabel.width = unscaledWidth;

 // or you could also use setActualSize; which is slightly different than setting height and width
 // becaues using setActualSize won't set the explicitHeight/explicitWidth, therefore measure will still 
 // execute
 this.myLabel.setActualSize(unscaledWidth, unscaledHeight)

 // or you could set the label to it's measured height and measured width
 this.myLabel.height = this.myLabel.getExplicitOrMeasuredHeight();
 this.myLabel.width = this.myLabel.getExplicitOrMeasuredWidth();

}
...