2011-12-10 5 views
3

페인팅 앱을 수행하고 있습니다. 그 안에, 나는 약간의 이미지를 그린다. 하지만 이전에 그린 항목을 제거하기 위해 실행 취소 작업을 추가하고 싶습니다. 해당 실행 취소 작업을 어떻게 구현할 수 있습니까?페인팅 앱에서 실행 취소 작업을 구현하는 방법

+0

그려진 개체를 어떻게 저장합니까? 답변은 코드에 따라 크게 달라집니다. 핵심 데이터에는 멋진 실행 취소/다시 실행 메커니즘이 있습니다. – dasdom

+0

그려진 이미지를 저장하기위한 버튼 하나를 추가했습니다. 그래서, 저장 버튼을 누르면 코어 데이터에 저장됩니다. – Nari

답변

3

TouchPainter라는 응용 프로그램이 있으며 해당 소스 코드를 사용할 수 있습니다. 도면, 색상 블렌딩, 실행 취소/다시 실행 (깜짝 .. ..), 도면 저장/열기가 포함됩니다.

참고 : 전체적인 응용 프로그램의 소스 코드는이 문서에서 설명합니다. 책 "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]; 

나는 그것이 당신을 도울 수 있기를 바랍니다.

관련 문제