강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

padosum님의 프로필 이미지
padosum

작성한 질문수

TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기

메멘토(Memento) - 그림판 히스토리 만들기

undo 구현

작성

·

17

0

안녕하세요 좋은 강의 잘 듣고 있습니다 

undo 기능을 따라 구현하던 중 이슈가 있어 질문 드립니다

pen mode로 그린 뒤 eraser mode에서 일부 지움 -> undo 실행

-> 화면이 모두 지워집니다

 

원인은 eraser mode에서 mousedown 시 ctx.globalCompositeOperation = 'destination-out' 로 바뀐 상태가 유지된 채 restore() 내부에서 drawImage()가 실행되기 때문인 것 같은데요,

 

제로초님이라면 

  • eraser mode 종료 시점 (mouseup)에서 source-over로 되돌리는 방식이랑

  • restore에서 source-over로 바꾼 뒤 drawImage()하는 것

  • 또는 제 3의 장소??

    어떤 곳에 작업하실지 여쭙고 싶습니다

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

eraser에서 할것같습니다. eraser에서 destination-out으로 바꿨으므로 끝날때 마무리도 거기서 하는게 맞아보네요. 상황에 따라 restore까지 둘 다 하면 더 좋을 것 같고요

padosum님의 프로필 이미지
padosum

작성한 질문수

질문하기