좋아, 나는 영리하려고 노력했다는 것을 인정한다. 나는 Shape의 drawFunc 속성을 무시하면 그냥 사각형 내부에 무엇이든 그릴 수 있고 여전히 KineticJS의 클릭 감지를 사용할 수 있다고 생각했다. 여기 내 시도입니다 :애니메이션 모양 안에있는 KineticJS 클릭 감지
var shape = new Kinetic.Shape({
drawFunc: function(context) {
var id = 26; // Id of a region inside composite image.
context.beginPath();
context.rect(0, 0, w, h);
context.closePath();
this.fill(context);
this.stroke(context);
context.drawImage(copyCanvas, (id % 8) * w, flr(id/8) * h,
w, h, 0, 0, w/2, h/2);
},
draggable: true
});
그래서 아이디어는 사각형을 그립니다, 그리고 수시로 변경을 제외하고 copyCanvas 자체가 변경되기 때문에, 텍스처처럼 (사각형의 상단에 뭔가를 그릴의 drawImage()를 사용하는 것이 었습니다). 한편, 나는 이벤트 처리 (특히 드래그 앤 드롭)가 여전히 '그냥 일하는 것'을 기대했다. 글쎄, 여기에 무슨 일이 일어나는가 : drawImage()에 의해 커버되지 않는 사각형의 부분이 클릭을 올바르게 감지한다. 그러나 이미지로 덮힌 직사각형의 1/4이 클릭에 응답하지 않습니다! 자, 내 질문은 왜? 나는 KineticJS 코드를 파헤 치고 클릭 탐지가 단순히 버퍼로 그리는 것을 의미하고 주어진 x, y 포인트가 0이 아닌 알파를 가지고 있는지를 보았다. 내 직사각형 위에 이미지를 그릴 때 이것이 어떻게 영향을받을 수 있는지 알 수 없습니다.
아이디어가 있습니까?
어서, 사람들, 내가 소스를 파고 자신에게 대답해야한다고 말하지 말아라! 세상은 어떻게 될까요? –
지금까지 제공된 정보만으로는 대답하기가 정말 어렵습니다. jsFiddle에서 문제를 보여주는 예제를 만들 수 있습니까? ([this] (http://jsfiddle.net/SyMRJ/) 또는 [this] (http://jsfiddle.net/pukster/wF7AA/)처럼) 내가 소스에서 볼 수있는 것에서 (v4.0.4), 'getIntersection'은'alpha === 255' (완전히 불투명) 인 픽셀 만 고려합니다. 불투명 한 모양 위에 투명도가있는 이미지를 그리는 것은 ['context.globalCompositeOperation']에 따라 알파를 줄이거 나하지 않을 수 있습니다. (http://www.whatwg.org/specs/web-apps/current-work/multipage /the-canvas-element.html#compositing). – mgibsonbr