0

切り取り、貼り付け、元に戻すボタンを備えたシンプルなテキスト エディターがあります。カット アンド ペースト用にこれを持っていますが、元に戻すボタンを作成する方法がわかりません。

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;
    }
}
4

2 に答える 2

0

テキスト フィールド テキストのコピーを変数に格納する必要があります。テキスト フィールドの値が変更されるたびに、変更が適用される (イベントが呼び出されるTextEvent.TEXT_INPUT) 前に、テキスト フィールドの値のコピーをこの変数に保存します。ボタンが押されたときundoに、テキスト フィールドの値をこの変数に格納されている値に設定します。

これは、1 ステップだけ元に戻すことができる最も簡単なソリューションです。テキストフィールドの複数の状態を保存するために、単一の変数の代わりに配列を使用できます。これにより、いくつかのステップを元に戻すことができます。

于 2013-08-09T11:02:00.830 に答える
0

配列ベースの元に戻すシステムを作成します。クリップボードは使用しないでください。

于 2013-08-09T11:06:16.687 に答える