목차
konva.js의 명령 모드를 기반으로 실행 취소 redo 함수 구현
웹 프론트엔드 JS 튜토리얼 UNDO 및 REDO 함수를 지원하기 위해 Konva.js에서 명령 클래스 명령 클래스를 구현하는 방법은 무엇입니까?

UNDO 및 REDO 함수를 지원하기 위해 Konva.js에서 명령 클래스 명령 클래스를 구현하는 방법은 무엇입니까?

Apr 04, 2025 pm 04:30 PM
ai red

UNDO 및 REDO 함수를 지원하기 위해 Konva.js에서 명령 클래스 명령 클래스를 구현하는 방법은 무엇입니까?

konva.js의 명령 모드를 기반으로 실행 취소 redo 함수 구현

이 기사에서는 명령 모드를 사용하여 UNDO (Ctrl Z) 및 redo (Ctrl y) 기능을 Konva.js 그리기 응용 프로그램에서 구현하는 방법을 소개합니다. 그래픽 작업을 명령 개체로 캡슐화하고 명령 스택을 사용하여 이러한 작업을 관리하여 그래픽 편집의 폴백 및 진행 상황을 달성합니다.

먼저 기본 Command 클래스를 정의하십시오.

 클래스 명령 {
  생성자 () {
    this.states = []; // 상태 스냅 샷을 저장하는 데 사용}

  실행하다() {
    새 오류를 던지십시오 ( '실행 방법이 구현되어야 함');
  }

  undo () {
    새 오류를 던지십시오 ( '실행 취소 방법을 구현해야 함');
  }

  저축 (주) {
    this.states.push (state);
  }

  Restorestate () {
    this.states.pop () ||를 반환하십시오 널; // 이전 상태 또는 NULL로 돌아갑니다
  }
}
로그인 후 복사

다음으로, 사각형을 그리는 명령과 같은 특정 명령 클래스를 만듭니다.

 Class DrawRectAngleCommand 확장 명령 {
  생성자 (스테이지, 레이어, 낙타) {
    감독자();
    this.stage = 단계;
    this.layer = 레이어;
    this.rect = rect;
  }

  실행하다() {
    this.savestate (this.layer.tojson ()); // 현재 레이어 상태를 저장 this.layer.add (this.rect);
    this.layer.draw ();
  }

  undo () {
    this.rect.destroy ();
    const prevstate = this.restorestate ();
    if (prevstate) {
      this.layer.destroychildren (); // 레이어를 지우십시오 .layer = konva.node.create (prevstate, this.stage); // 이전 상태를 복원 this.stage.add (this.layer);
      this.layer.draw ();
    }
  }
}
로그인 후 복사

그런 다음 명령 관리자를 구현하십시오.

 클래스 CommandManager {
  생성자 () {
    this.undostack = [];
    this.redostack = [];
  }

  executeCommand (명령) {
    command.execute ();
    this.undostack.push (명령);
    this.redostack = []; // 새 명령을 실행 한 후 Redo Stack을 지우십시오}

  undo () {
    if (this.undostack.length === 0) 반환;
    const command = this.undostack.pop ();
    command.undo ();
    this.redostack.push (명령);
  }

  redo () {
    if (this.redostack.length === 0) 반환;
    const command = this.redostack.pop ();
    command.execute ();
    this.undostack.push (명령);
  }
}
로그인 후 복사

마지막으로 Konva.js 응용 프로그램에서 사용하십시오.

 Const Stage = New Konva.Stage ({{
  컨테이너 : '컨테이너',
  너비 : Window.InnerWidth,
  높이 : Window.innerHeight
});

const layer = new Konva.layer ();
stage.add (레이어);

const CommandManager = new CommandManager ();

stage.on ( 'click', (e) => {
  const rect = new konva.rect ({
    X : e.evt.layerx,
    Y : e.evt.layery,
    너비 : 50,
    높이 : 50,
    채우기 : '빨간색',
    Draggable : True
  });

  const command = new DrawRectAngleCommand (Stage, Layer, rect);
  CommandManager.ExecuteCommand (명령);
});

document.addeventListener ( 'keydown', (e) => {
  if (e.ctrlkey && e.key === 'z') {
    CommandManager.undo ();
  } else if (e.ctrlkey && e.key === 'y') {
    CommandManager.redo ();
  }
});
로그인 후 복사

이 코드는 간단한 사각형 도면과 실행 취소를 구현합니다. 이동, 스케일링, 회전 등과 같은 다른 그래픽 작업을 지원하기 위해 Command 클래스를 확장 할 수 있습니다. 각 작업의 execute 방법에서 현재 상태를 저장하고 undo 방법에서 이전 상태를 복원해야합니다. 이렇게하면 실행 취소 레디 기능이 올바르게 작동합니다.

위 내용은 UNDO 및 REDO 함수를 지원하기 위해 Konva.js에서 명령 클래스 명령 클래스를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

통화 서클 시장의 실시간 데이터에 대한 상위 10 개 무료 플랫폼 권장 사항이 출시됩니다. 통화 서클 시장의 실시간 데이터에 대한 상위 10 개 무료 플랫폼 권장 사항이 출시됩니다. Apr 22, 2025 am 08:12 AM

초보자에게 적합한 cryptocurrency 데이터 플랫폼에는 CoinmarketCap 및 비소 트럼펫이 포함됩니다. 1. CoinmarketCap은 초보자 및 기본 분석 요구에 대한 글로벌 실시간 가격, 시장 가치 및 거래량 순위를 제공합니다. 2. 비소 인용문은 중국 사용자가 저 위험 잠재적 프로젝트를 신속하게 선별하는 데 적합한 중국 친화적 인 인터페이스를 제공합니다.

주요 가상 통화 거래 플랫폼을위한 특별 서비스 목록 주요 가상 통화 거래 플랫폼을위한 특별 서비스 목록 Apr 22, 2025 am 08:09 AM

기관 투자자는 Coinbase Pro 및 Genesis Trading과 같은 준수 플랫폼을 선택하여 냉장 저장 비율 및 감사 투명성에 중점을 두어야합니다. 소매 투자자는 사용자 경험과 보안에 중점을 둔 Binance 및 Huobi와 같은 대규모 플랫폼을 선택해야합니다. 규정 준수에 민감한 영역의 사용자는 Circle Trade 및 Huobi Global을 통해 Fiat 통화 거래를 수행 할 수 있으며 Mainland Chinese 사용자는 규정을받는 처방전없이 구입할 수있는 채널을 통과해야합니다.

여러 통화를 지원하는 10 개의 가상 통화 거래 플랫폼 목록 여러 통화를 지원하는 10 개의 가상 통화 거래 플랫폼 목록 Apr 22, 2025 am 08:15 AM

OKX 및 Coinbase와 같은 준수 플랫폼에 우선 순위가 부여되어 다중 인자 검증이 가능하며 자산 셀프 사용량은 의존성을 줄일 수 있습니다. 1. 규제 라이센스와의 교환을 선택하십시오. 2. 2FA의 화이트리스트와 인출을 켜십시오. 3. 하드웨어 지갑 또는 자기 사용을 지원하는 플랫폼을 사용하십시오.

대량 거래를위한 가상 통화 거래 플랫폼 10 위 대량 거래를위한 가상 통화 거래 플랫폼 10 위 Apr 22, 2025 am 08:18 AM

대량 거래 플랫폼을 선택할 때 다음 요소를 고려해야합니다. 1. 유동성 : 평균 일일 거래량이 50 억 달러 이상인 플랫폼에 우선 순위가 부여됩니다. 2. 규정 준수 : 플랫폼이 미국의 Fincen과 같은 라이센스, 유럽 연합의 Mica와 같은 라이센스를 보유하고 있는지 확인하십시오. 3. 보안 : 콜드 지갑 저장 비율 및 보험 메커니즘이 핵심 지표입니다. 4. 서비스 기능 : 독점 계정 관리자 및 맞춤형 트랜잭션 도구를 제공할지 여부.

통화 서클 2025의 상위 10 개 시장 웹 사이트에 대한 팁 및 권장 사항 통화 서클 2025의 상위 10 개 시장 웹 사이트에 대한 팁 및 권장 사항 Apr 22, 2025 am 08:03 AM

국내 사용자 적응 솔루션에는 규정 준수 채널 및 현지화 도구가 포함됩니다. 1. 규정 준수 채널 : 국내에서 Circle Trade와 같은 OTC 플랫폼을 통한 프랜차이즈 환전. 홍콩 또는 해외 플랫폼을 통과해야합니다. 2. 현지화 도구 : 통화 서클 네트워크를 사용하여 중국 정보를 얻고 Huobi Global Station은 메타 우주 거래 터미널을 제공합니다.

디지털 환전 앱 용 상위 10 대 애플 버전 다운로드 포털 요약 디지털 환전 앱 용 상위 10 대 애플 버전 다운로드 포털 요약 Apr 22, 2025 am 09:27 AM

다양한 복잡한 거래 도구 및 시장 분석을 제공합니다. 이 회사는 100 개 이상의 국가를 다루고 있으며 평균 일일 파생 상품 거래량은 300 억 달러 이상이며 300 개가 넘는 거래 쌍과 200 배의 레버리지를 지원하며, 기술 강도가 강하고, 글로벌 사용자 기반, 전문적인 거래 플랫폼, 안전한 스토리지 솔루션 및 풍부한 거래 쌍을 제공합니다.

상위 10 개의 가상 통화 거래 앱은 무엇입니까? 상위 10 개 디지털 환전소 플랫폼에서 권장됩니다 상위 10 개의 가상 통화 거래 앱은 무엇입니까? 상위 10 개 디지털 환전소 플랫폼에서 권장됩니다 Apr 22, 2025 pm 01:12 PM

2025 년의 상위 10 개 보안 디지털 통화 거래소는 다음과 같습니다. 1. Binance, 2. Okx, 3. Gate.io, 4. Coinbase, 5. Kraken, 6. Huobi, 7. Bitfinex, 8. Kucoin, 9. Bybit, 10. Bitstamp. 이 플랫폼은 핫 및 콜드 지갑의 분리, 다중 서명 기술 및 24/7 모니터링 시스템을 포함한 다단계 보안 조치를 채택하여 사용자 자금의 안전을 보장합니다.

stablecoins는 무엇입니까? stablecoin을 교환하는 방법? stablecoins는 무엇입니까? stablecoin을 교환하는 방법? Apr 22, 2025 am 10:12 AM

일반적인 안정된 안정은 다음과 같습니다. 1. 테더, 테더가 발행하고 미국 달러로 휘두르고 널리 사용되지만 투명성에 의문이 제기되었습니다. 2. Circle 및 Coinbase가 발행 한 미국 달러, 투명성이 높고 기관이 선호하는 미국 달러; 3. Makerdao가 발행 한 Dai, 분산 및 결함 필드에서 인기가 있습니다. 4. BINANCE와 PAXOS가 협력 한 BISD (Binance Dollar)는 훌륭한 거래 및 지불 성과를 가지고 있습니다. 5. 신뢰

See all articles