這可能是也可能不是你希望做什麼:
package
{
import mx.controls.TextArea;
public class CountingTextArea extends TextArea
{
public var staleText : String = "";
[Bindable("textChanged")]
[NonCommittingChangeEvent("change")]
public function get charDiff() : int
{
var diff : int = staleText.length - text.length;
staleText = text;
return diff;
}
public function CountingTextArea()
{
super();
}
}
}
我做到了,這樣就可以使用它作爲綁定源。相反,訂閱對每個TextArea的事件,你可以使用:
function addWatchers():void
{
ChangeWatcher.watch(countingTextArea1, ["charDiff"], charDiffChangeHandler);
...
ChangeWatcher.watch(countingTextArea5, ["charDiff"], charDiffChangeHandler);
}
與事件處理程序過於地方:
function charDiffChangeHandler(event : PropertyChangeEvent) : void
{
trace(event.currentTarget.charDiff);
// or
trace(event.newValue);
}
我沒有使用標誌或功能上面的那些東西,但它接縫是我的解決方案....我如何調用此功能,或自動執行爲我做這件事,唯一的辦法就是當我從課外ex趕上變化事件時,得到那個staleText。 event.currentTarget.staleText? – Biroka 2010-05-26 12:50:10
見上面更新。我不確定通知如何在這裏工作。 – jooks 2010-05-26 13:13:39