강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

makalu1710010 のプロフィール画像
makalu1710010

投稿した質問数

TS/JSデザインパターン with Canvas: ゼロ秒にしっかり学ぶ

メメント(Memento) - ペイントの履歴作成

undo 구현

作成

·

46

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의 장소??

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

javascripttypescript객체지향디자인-패턴canvas

回答 1

1

zerocho님의 프로필 이미지
zerocho
インストラクター

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

makalu1710010 のプロフィール画像
makalu1710010

投稿した質問数

質問する