2011-12-10 102 views
3

我正在做一個繪畫應用。在那裏,我畫了一些圖像。但我想添加撤消操作來刪除以前繪製的項目。我怎樣才能實現撤銷操作?如何在繪畫應用中實現撤消操作

+0

如何存儲已繪製的對象?答案很大程度上取決於你的代碼。核心數據有一個很好的撤銷/重做機制。 – dasdom

+0

我添加了一個按鈕來保存繪製的圖像。所以,當我點擊保存按鈕,然後將其存儲到核心數據。 – Nari

回答

3

有一個名爲TouchPainter的應用程序,它的源代碼可用。它包含圖形,顏色混合,撤消/重做(Amazing .. !!),保存/打開圖形。

注意:它可能需要非常深入的目標C知識。整個應用程序的源代碼在此解釋書「Apress.Pro.Objective-C.Design.Patterns.for.iOS.Mar.2010」可用,源代碼也可以在這裏找到:

http://www.apress.com/apple-mac/objective-c/9781430233305

我希望這將有助於你.. :)祝你好運..

0

參考此鏈接: Design Pattern for Undo Engine

一般來說,你需要執行一個命令模式(或類似的一個)。 如果可以顛倒一個操作(例如,在圖形程序中,您可以放大一個圓),則可以將修改存儲在命令中。否則,您可能不得不保存以前狀態的深層克隆。

0

我會創建一個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]; 

我希望它能幫助你。