我正在尝试为Flex应用程序创建动态布局。
我需要一个布尔值,它取决于浏览器窗口的整体宽度,用于设置状态,
if(this.parentApplication.width<950)
{
currentState = "wide"
}else{
currentState = "narrow"
}
但是,我不能在fx:Script标签中说明这一点,那么实现它的最佳方法是什么? enterFrame="application1_enterFrameHandler(event)"
有效,但我不禁觉得这可能是不必要的,而且计算密集程度非常大(而且我的应用程序运行速度很慢,预计在不久的将来会有一两个与弹性效率相关的问题)。
由于
约什
答案 0 :(得分:1)
你需要让舞台可用(例如check this)然后 像这样的东西:
[...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.
}
答案 1 :(得分:0)
您可以尝试使用事件处理程序。
myListener = new Object();
myListener.onResize = function() {
currentState = (obj.parentApplication.width<950) ? 'wide' : 'narrow';
};
Stage.addListener(myListener);
抱歉,我的ActionScript有点生疏,已经有一段时间了,但你可能不得不更改obj.parentApp...
,据我所知,在这里使用this
会引用参数通常通过回调函数。
编辑:忘了提及会发生什么..基本上,当用户调整电影阶段时,会触发匿名函数..比检查每个帧事件要便宜很多。