所以我设法学习了一些Flex并创建了一个小应用程序:
现在我正在考虑创建一些撤消重做功能。 每次我进行转换/添加过滤器时,我希望能够返回上一个图像(在操作之前)。
我的想法是拥有一个数组并将之前的位图添加到堆栈中。 但我发现转换和过滤器之间存在一些差异 我也看过ImageSnapshot和whot我可以做,它看起来像我想要的。
总体而言,我对Flex有点新意,我希望这里有人可以就此提出任何建议,并希望能为我们提供方向。
感谢您的任何建议! 最好的问候,
冉
答案 0 :(得分: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);