Iphone 如何在绘画应用程序中实现撤消操作
我正在做一个绘画应用程序。在这里,我画了一些图像。但我想添加撤消操作以删除以前绘制的项目。如何实现撤消操作?以下是操作步骤。请参阅此链接: 一般来说,您需要实现一个命令模式(或类似的模式)。 如果可以反转一个操作(例如,在图形程序中,放大一个圆),则可以将修改存储在命令中。Iphone 如何在绘画应用程序中实现撤消操作,iphone,Iphone,我正在做一个绘画应用程序。在这里,我画了一些图像。但我想添加撤消操作以删除以前绘制的项目。如何实现撤消操作?以下是操作步骤。请参阅此链接: 一般来说,您需要实现一个命令模式(或类似的模式)。 如果可以反转一个操作(例如,在图形程序中,放大一个圆),则可以将修改存储在命令中。 否则,您可能必须保存以前状态的深层克隆。有一个名为TouchPainter的应用程序,其源代码可用。它包含绘图、颜色混合、撤消/重做(惊人..!!)、保存/打开绘图 注意:它可能需要非常深入的Objective C知识。本
否则,您可能必须保存以前状态的深层克隆。有一个名为TouchPainter的应用程序,其源代码可用。它包含绘图、颜色混合、撤消/重做(惊人..!!)、保存/打开绘图 注意:它可能需要非常深入的Objective C知识。本书“Apress.Pro.Objective-C.Design.Patterns.for.iOS.Mar.2010”介绍了整个应用程序的源代码,这里也提供了源代码:
我希望这将对您有所帮助:)祝你好运。我将创建一个NSMutableArray,并在其上添加每个操作
NSMutableArray *ObjectList = [[NSMutableArray alloc] init];
[ObjectList addObject: TheSKSprite1];
[ObjectList addObject: TheSKSprite2];
[ObjectList addObject: TheSKSprite3];
...
然后检索最后添加的图形,将其从视图和阵列中删除
SKSpriteNode *OneDrawing = [ObjectList objectAtIndex:(int)[ObjectList count]-1];
[OneDrawing removeFromParent];
[ObjectList removeObjectAtIndex:(int)[ObjectList count]-1];
我希望它能帮助您。您如何存储已绘制的对象?答案在很大程度上取决于您的代码。核心数据有一个很好的撤销/重做机制。我添加了一个保存绘制图像的按钮。所以,当我点击save按钮时,它被存储到核心数据中。