-2
我有取決於許多其他Flex變量的一個Flex變量。我希望這個變量在任何時候都被更新,它所依賴的任何變量都會被更新。使用單個ChangeWatcher可以做到這一點嗎?Flex:changewatcher可以觀察多個變量嗎?
具體而言,可以將下面的代碼被修改,使得它僅使用一個返回ChangeWatcher並且如果是這樣怎麼辦?
<?xml version="1.0" encoding="utf-8"?>
<s:Application 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="955" minHeight="600"
creationComplete="init(event);">
<fx:Script>
<![CDATA[
import mx.binding.utils.ChangeWatcher;
import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
public var watcher1:ChangeWatcher;
public var watcher2:ChangeWatcher;
public var watcher3:ChangeWatcher;
public var nClicked:int = 0;
[Bindable]
public var buttonCounterTxt:String = "nclicked =" + nClicked.toString();
[Bindable]
public var btn1Clicked:Boolean = false;
[Bindable]
public var btn2Clicked:Boolean = false;
[Bindable]
public var btn3Clicked:Boolean = false;
protected function init(event:FlexEvent):void
{
watcher1 = ChangeWatcher.watch(this, 'btn1Clicked', updateNClicked);
watcher2 = ChangeWatcher.watch(this, 'btn2Clicked', updateNClicked);
watcher3 = ChangeWatcher.watch(this, 'btn3Clicked', updateNClicked);
}
protected function updateNClicked(event:Event):void{
nClicked = 0;
if(btn1Clicked)
nClicked++;
if(btn2Clicked)
nClicked++;
if(btn3Clicked)
nClicked++;
buttonCounterTxt = "nclicked =" + nClicked.toString();
}
]]>
</fx:Script>
<s:Button id="myBtn1" x="50" y="0" click="{btn1Clicked=!btn1Clicked}"
label="{btn1Clicked?'unclickMe':'clickMe'}"/>
<s:Button id="myBtn2" x="50" y="50" click="{btn2Clicked=!btn2Clicked}"
label="{btn2Clicked?'unclickMe':'clickMe'}"/>
<s:Button id="myBtn3" x="50" y="100" click="{btn3Clicked=!btn3Clicked}"
label="{btn3Clicked?'unclickMe':'clickMe'}"/>
<s:Label x="50" y="200" text="{buttonCounterTxt}"/>
</s:Application>
我正在使用Flex 4.14.1。
我認爲你可以**不**使用一個'ChangeWatcher'爲多個屬性。 – akmozo
我不知道如果你貼的代碼只是作爲一個例子,你真的需要一個切換按鈕,但不是所有的,你可以用一個簡單的['ToggleButton'](http://help.adobe.com/ EN_US/FlashPlatform /參考/動作/ 3 /火花/組件/ ToggleButton.html)組件... – akmozo
也許你只需要創建這些屬性的一些getter和setter方法?只要值發生變化,setter函數就可以調用你的'updateNClicked()'函數。 –