如何检测Flex中的屏幕宽度/高度变化
问题描述:
我使用x/y坐标将对象放置在屏幕上。我想要一种方法来根据屏幕宽度/高度的更改进行更新。所以如果使用重新调整大小的浏览器窗口x/y应该改变。每次屏幕重新调整大小时,我如何才能启动一项功能。如何检测Flex中的屏幕宽度/高度变化
答
你可以做到这一点通过附加的ResizeEvent监听器,你要跟踪的任何对象:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/events/ResizeEvent.html
public class Main extends Sprite {
public function Main () {
stage.addEventListener(Event.RESIZE, resizeListener);
}
private function resizeListener (e:Event):void {
trace("The application window changed size!");
trace("New width: " + stage.stageWidth);
trace("New height: " + stage.stageHeight);
}
}
答
你可以设置一个监听器上在MXML中Application
标签右边的Resize
事件。
尽管您可能想要探索基于百分比的设置,但在大多数情况下,这样做的效果会更差。
答
检测屏幕分辨率的变化,通过简单地添加在应用程序级别事件侦听器,并使用事件属性探测变化
private function init():void
{
this.addEventListener(ResizeEvent.RESIZE, resizeApplication);
}
public function resizeApplication(event:ResizeEvent):void
{
if(this.stage.stageHeight != event.oldHeight)
{
//perform action here or just use the above properties in any way you want
}
}
我做了这个功能公开,以便它可以在任何地方使用的最佳途径在应用程序中,如果事件被解雇但附加到它的视图没有收听。