2012-12-16 6 views
4

KineticJS에서 개체/모양 바깥에서 클릭이 발생하는 Click 이벤트를 어떻게 감지합니까?KineticJS에서 모양을 클릭하지 않고 스테이지에서 클릭 감지

Rect 사용자가 2을 클릭하면 해당 배율을 변경하려고 시도하고 사용자가 외부에서 아무 곳이나 클릭하면 1의 배율로 돌아갑니다.

JSfiddle은 : 무대에서 클릭을 감지하기 위해 관리하지만, Rect 클릭http://jsfiddle.net/ABTAD/8/

또한 클릭 처리기를 발생! 그리고 어쨌든 .setScale(1)은 아무 것도하지 않는 반면, console.log은 뭔가를 인쇄합니다. 빈 스테이지 대신 Rect에서 클릭이 발생하면 클릭 핸들러가 실행되지 않도록하려면 어떻게해야합니까?

JS 코드는 stage.getContent와 함께 무대 콘텐츠 래퍼에 액세스 할 수 있습니다 단계

window.stage.getContainer().addEventListener('click', function(e) { 
    $.each(window.layer.get('.box'), function(index, box) { 
     box.setScale(1); 
     console.log('clicked on stage'); 
    }); 
}); 
+0

당신은 여전히 ​​키네틱을 배우지만, JS 포인터를 heres 알고 있습니다. 당신은 세계를 만들기 위해 물건을 만들기 전에 창을 둘 필요가 없습니다. 변수 decleration 전에 var를 넣으면 변수가 생성 된 범위/함수에서만 사용할 수 있습니다. 변수 decleration 앞에 var를 두지 않으면 전역 변수가됩니다 (앞에 window를 둡니다와 동일). 이 게시물을 보셨습니까? ... http://stackoverflow.com/questions/13866660/create-a-rectangle-with-mousedown-event-in-kineticjs 그는 당신이 다음에 대해 확인할 수있는 첫 번째 레이어로 rect를 넣어. 또한 일반적인 이벤트를 사용하는 것이 좋습니다. – PAEz

+0

감사합니다 !! 나는 실제로 그것들을'var App = {};와 같이 이름 짓는다. App.stage = ...'Havent는이 게시물이 gd 아이디어처럼 들리는 것을 보았습니다. – Nyxynyx

+4

http://jsfiddle.net/ABTAD/11/ – PAEz

답변

5

에 클릭을 감지하는(). 거기에서 다음과 같은 이벤트 핸들러를 추가 할 수 있습니다.

stage.getContent(). addEventListener ('click', ...); . // 일반 자바 스크립트

또는

$은 (stage.getContent는())에 (..., '클릭'); // jquery

+1

KineticJS 4.3.1에서 getDOM()의 이름이 getContent()로 변경되었습니다. –

+1

안녕하세요, 배경 사각형을 설정하고 클릭 이벤트를 바인딩 할 필요없이 레이어에서이 작업을 수행 할 수 있습니까? –

관련 문제