작성
·
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까지 둘 다 하면 더 좋을 것 같고요