버튼 클릭 이벤트는 fabricjs의 모든 이벤트와 함께 발생합니다.

암호화

이틀 동안 fabricjs 캔버스의 이벤트에 문제가 있습니다. fabricjs에 관한 것 같습니다. 문제를 발견했지만 왜 문제인지 이해할 수 없습니다.

마우스 이벤트와 clip1 및 clip2 함수를 호출하는 두 개의 버튼 (클릭 이벤트)이 있습니다.

  1. button1을 통해 clip1을 호출 할 때까지 마우스 이벤트가 정상적으로 작동합니다.
  2. clip1을 한 번만 호출하면 모든 다운 이벤트에서 작동합니다.
  3. button2를 통해 호출되는 clip2 함수에는 문제가 없습니다.

clip1과 clip2의 차이점 : clip1은 this.canvas를 사용하고 clip2는 새 캔버스를 만듭니다. button1 클릭 이벤트가 캔버스의 모든 이벤트에 등록되는 것처럼 보입니다. 벌레처럼?

.HTML

<canvas id="c" width="800" height="800" style="border:1px solid #000"></canvas>
<img src="../../clips/kupurFirst.jpg" id="my-image1" hidden>
<button (click)="clip1()">Clip1 </button>
<button (click)="clip2()">Clip2</button>

.TS

import { Component, OnInit } from '@angular/core';

@Component({
  moduleId: module.id,
  selector: 'app-fabric',
  templateUrl: 'fabric.component.html',
  styleUrls: ['fabric.component.css']
})
export class FabricComponent implements OnInit {

  public canvas: any;
  public src: string;

  constructor() { }

  ngOnInit() {

    this.canvas = new fabric.Canvas('c');
    this.src = "../../clips/kupurSecond.jpg";

    loadCanvas(this.src, this.canvas);

    // Works normally until click event (clip1) fires
    this.canvas.on('mouse:down', function (event) {
      console.log("Down");
    });
  }

  // Problem with this.canvas
  public clip1() {
    loadCanvas(this.src, this.canvas);
    this.canvas.clipTo = function (ctx) {
      console.log("clip1");
    };
  }
  // No problem with new canvas element
  public clip2() {
    var canvas = new fabric.Canvas('c');
    loadCanvas(this.src, canvas);

    canvas.clipTo = (ctx) => {
      console.log("clip2");
    };
  }

}

var loadCanvas = (src: string, canvas: any) => {
  fabric.Image.fromURL(src, (oImg) => {
    canvas.add(oImg);
  }, { hasControls: false, selectable: false, evented: false, strokeDashArray: [2, 2], opacity: 1 });

}
암호화

해결책을 찾았습니다. 완벽하지는 않지만 나를 위해 작동합니다.

this.canvas.clipTo = null; // Prevents fire of clipTo function at every event.

이 줄을 새 버튼 (기능)에 넣고 이름을 "실행 취소"로 지정했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

이벤트와 함께 클릭 한 버튼의 ID를 얻는 방법을 찾은 후에는 다른 모든 것이 작동을 멈췄습니다.

버튼이 클릭되지 않은 경우에도 버튼의 onClick 이벤트가 발생합니다.

다른 버튼 위에있는 사용 안함 버튼을 클릭하면 다른 버튼의 클릭 이벤트가 트리거됩니다.

ajax가 포함 된 자바 스크립트 함수는 제출 후 작동하지 않지만 버튼 클릭 이벤트와 함께 작동합니다.

클릭 이벤트를 두 번 생성하는 함수를 실행하면 한 번의 클릭으로 두 번 클릭 이벤트가 발생합니다.

Angular5의 ng-bootstrap 모달 팝업에 버튼이 있으면 Jquery 버튼 클릭 이벤트가 발생하지 않습니다.

모달 버튼 클릭 이벤트

모달 버튼 클릭 이벤트

VBA의 다른 버튼 클릭 이벤트 내에서 버튼 클릭 이벤트 핸들러 사용

IronPython + Wpf의 버튼 클릭 이벤트

버튼 클릭 이벤트로 자바 스크립트의 모든 값을 변경하는 방법은 무엇입니까?

모든 페이지 로드 시 트리거되는 버튼 클릭 이벤트

이 문서의 키 누르기와 버튼 클릭 이벤트를 결합하는 방법

다중 버튼 클릭 이벤트

모든 버튼 클릭 시 이벤트 추가

버튼 클릭 이벤트가 발생하지 않는 것 같습니다

C# Forms 이벤트, 버튼 클릭으로 두 개의 버튼 생성

현재 선택된 버튼이 아닌 동일한 클래스 이름을 가진 모든 버튼에 대해 Jquery 이벤트가 발생합니다.

다른 버튼 이벤트를 트리거하는 클릭 이벤트

클릭 이벤트가 모든보기 버튼에 대해 동시에 작동합니다.

버튼 이벤트가 트리거되지 않음 (동적으로 생성 된 클래스와 함께 작동)

멀티 클릭 (2 개 이상의 버튼을 함께 클릭)

<a>의 jQuery 클릭 이벤트가 두 번 발생합니다.

버튼 클릭 (클릭) 이벤트는 <a href> 이벤트 이후에 실행되어야합니다.

모든 버튼을 클릭 이벤트 리스너로 반복하는 방법

하위 폴더와 함께 폴더를 생성하는 버튼 이벤트

내 페이지의 모든 버튼에 대해 JQuery 클릭 이벤트를 만들려면 어떻게 해야 합니까?

자식 클릭 이벤트 발생 부모 마우스 오버 이벤트

TextBoxFor Enter 키를 누르는 동안 자동으로 버튼 클릭 이벤트가 발생합니다.

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관