0
我有一個Spark組件,當可見時(通過Timer)運行一些動畫。當它再次顯示通過狀態變化顯示或隱藏Spark組件時檢測
- 暫停定時器的是隱藏在何時
- 簡歷定時器:
組件應該。
。
<!-- RandomButton.mxml-->
<?xml version="1.0"?>
<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="start()">
<fx:Script><![CDATA[
public var ticker:Timer = new Timer(1000, 0)
private function start():void {
ticker.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
label = '' + Math.random()
})
}
]]></fx:Script>
</s:Button>
這裏是如何的目標可以用enterState + exitState來實現:
<!-- Main.mxml -->
<?xml version="1.0" ?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns="*">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:states>
<s:State name="STATE_1"
enterState="b.ticker.start()"
exitState="b.ticker.stop()"/>
<s:State name="STATE_2"/>
</s:states>
<s:Button label="STATE_1" click="currentState='STATE_1'"/>
<s:Button label="STATE_2" click="currentState='STATE_2'"/>
<RandomButton id="b" includeIn="STATE_1"/>
<s:Label text="Debug: {b.label}"/>
</s:Application>
當點擊STATE_2按鈕,停止計時器 - 你可以看到 '調試' 標籤也停止。
你可以看到RandomButton需要一些外部的「幫助」來處理它的內部問題。這意味着將enterState/exitState複製到RandomButton將要使用的任何地方。這只是傷心。
問題
我想RandomButton本身保持其狀態。就像這樣:
<!-- Main.mxml -->
...
<s:states>
<s:State name="STATE_1"/><!-- no need to poke inside the RandomButton -->
<s:State name="STATE_2"/>
</s:states>
...
<!-- RandomButton.mxml -->
<?xml version="1.0"?>
<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="start()"
whenShown="ticker.start()"
whenHidden="ticker.stop()" >
...
</s:Button>
屬性whenShown和whenHidden不存在。這些只是一個願望。
注:有顯示和隱藏屬性,但他們處理可見屬性(它仍設置爲真正無論狀態的變化)。