我有一个带剪切,粘贴和撤消按钮的简单文本编辑器。我有这个用于剪切和粘贴,但我不知道如何创建撤消按钮?
var clipboardFmt:TextFormat = new TextFormat();
var initialPoint:Number = new Number();
var finalpoint:Number = new Number();
var clipBoard:String = new String();
cut_button.addEventListener(MouseEvent.CLICK,cutText);
paste_button.addEventListener(MouseEvent.CLICK, pastefromClipboard);
function cutText(event:MouseEvent):void
{
clipBoard = txt.text.substring(txt.selectionBeginIndex,txt.selectionEndIndex);
System.setClipboard(clipBoard);
txt.replaceText(txt.selectionBeginIndex,txt.selectionEndIndex,"");
}
function pastefromClipboard(e:Event):void
{
txt.replaceText(txt.selectionBeginIndex,txt.selectionEndIndex,clipBoard);
finalpoint = initialPoint + clipBoard.length;
txt.setSelection(initialPoint,finalpoint);
txt.setTextFormat(clipboardFmt, initialPoint,finalpoint);
}
txt.addEventListener(Event.CHANGE,count);
function count(e:Event):void
{
wn.text = countWords(txt.text);
function countWords(input:String):int
{
return input.match(/[^\s]+/g).length;
}
}
答案 0 :(得分:0)
您需要在变量中存储文本字段文本的副本。每次更改文本字段的值但在应用更改之前(事件称为TextEvent.TEXT_INPUT
)将文本字段值的副本保存到此变量中。按下undo
按钮时,将文本字段值设置为存储在此变量中的值。
这是最简单的解决方案,只允许您撤消一步。您可以使用数组而不是单个变量来存储文本字段的多个状态,这将允许您撤消几个步骤。
答案 1 :(得分:0)
创建基于数组的撤消系统。不要使用剪贴板,它将无法正常工作。