我有一個窗口,我想在其中添加/刪除組件,並根據狀態相應調整窗口大小。但由於某種原因,它忽略了第一次調整大小。 這裏是一個示例代碼Flex第一個窗口寬度/邊界被忽略
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="450"
minHeight="355"
currentState="{stateBox.selected ? 'one' : 'two'}"
currentStateChange="handleStateChange(event.oldState, event.newState)">
<fx:Script>
<![CDATA[
private function handleStateChange(oldState:String, newState:String):void
{
if (oldState == "two") {
width -= 341;
minWidth = 450;
} else {
width += 341;
minWidth = 791;
}
}
]]>
</fx:Script>
<s:states>
<s:State name="one" />
<s:State name="two" />
</s:states>
<s:Rect id="rect1" top="0" left="0" right="0" right.two="341" bottom="0" >
<s:fill>
<s:SolidColor color="0xDDDDDD" />
</s:fill>
</s:Rect>
<s:Rect id="rect2" top="0" bottom="0" width="341" right="0" includeIn="two" >
<s:fill>
<s:SolidColor color="0x000000" />
</s:fill>
</s:Rect>
<s:CheckBox id="stateBox" label="change state" />
</s:WindowedApplication>
想法是,當狀態更改爲「兩節」,我想補充RECT2顯示和增加minWidth和窗口的大小。當狀態改變爲'one'時,我想從顯示中刪除rect2並調整窗口大小。這似乎工作,除非窗口在第一次從「兩」到「一」之間的狀態改變時不收縮,而是隨後按預期工作。我不確定爲什麼它忽略了我第一次減小寬度。我也嘗試直接更改nativeWindow.bounds,但這也不起作用。
最初我只是嘗試根據狀態設置minWidth(minWidth.one =「450 minWidth.two =」791「),但導致窗口左側增長和右側縮小,導致窗口隨時向左移動所以然後我只是把窗戶移到右邊,只要狀態改變了,但是導致了一些我不想要的閃爍,
沒有人知道爲什麼會發生這種情況嗎?或者我的問題有很好的解決方案嗎?
你試過調用'validateNow()'或'validateDisplayList ()'調整大小後? – 2011-03-31 19:05:06
是啊我試着調用'validateNow()'和'validateDisplayList()',但它不起作用。奇怪的是,它只是忽略了第一次調用'width - = 341',但隨後的調用工作正常。 – lordofthefobs 2011-03-31 20:09:28