我可以以某种方式找出文本字段中的变化吗?我想比较旧文本和新文本...问题是,我在选项卡编辑器中有多个textAreas,所有textAreas都由一个eventListener监视。我想通过下一个公式得到一个值:
globalChangeCount += thisTextArea.currentCharacterCount - thisTextArea.oldtCharacterCount
其中globalChangeCount是由任何textAreas中的所有更改修改的值。
我通过事件变量搜索这些值,但无法找到找到textArea的旧文本。
答案 0 :(得分:2)
这可能是也可能不是你想要做的事情:
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);
}
答案 1 :(得分:0)
您可以使用event.currentTarget获取对触发事件的TextArea的引用,并使用focusIn事件执行函数以使用旧文本值填充变量。
答案 2 :(得分:0)
也许你应该只是继承TextArea
并创建一个oldText
字段变量,在通知所有外部监听器之后在内部更新。