1

それで、私は Flex を学ぶことができ、次のような小さなアプリを作成しました。

  • 画像コンポーネントに画像をロードします
  • マトリックスを使用して画像を変換 (回転、反転)
  • フィルターを適用

今、私はいくつかの元に戻す機能を作成することを考えています。変換を行う/フィルターを追加するたびに、前の画像 (アクションの前) に戻ることができるようにしたいと考えています。

私の考えは、配列を持ち、前のビットマップをスタックに追加することです。しかし、変換とフィルターにはいくつかの違いがあることがわかり、ImageSnapshot と私ができることも見てきました。

私は一般的にFlexに少し慣れていないので、ここの誰かがこれについてアドバイスをくれて、できれば方向性を教えてくれることを願っています.

アドバイスをありがとう!よろしくお願いします、

ラン

4

1 に答える 1

0

Command design patternを調べることをお勧めします。

基本的に、配列には画像ではなく、画像に対して行われた操作を表すトークンが含まれます。各トークンには、その操作を元に戻す (およびやり直す) のに十分な情報が含まれます。

var c:Command = new RotateCommand(90, CLOCKWISE);
c.doWork();
history.push(c);

// Undo
var c:Command = history.pop();
c.undoWork();

次に、コマンドで、大まかに:

public function doWork():void {
    var newTransform:Matrix = calculateTransform(angle, direction); // 90, CLOCKWISE
    image.transform.matrix.concat(newTransform);
}

public function undoWork():void {
    var newTransform:Matrix = calculateTransform(-angle, direction); // reverse operation
    image.transform.matrix.concat(newTransform);
于 2010-01-21T20:09:06.800 に答える