2014-09-08 1 views
0

나는 레이어를 클릭 할 때 새 서클을 만들 수 있지만 이전에 만든 서클을 클릭하면 경고를 볼 수있는 "게임"을 만듭니다. 문제는 스테이지 만들기 onclick 이벤트가 항상 실행되므로 서클 생성을 중단 할 수 없다는 것입니다."onclick-event 대상"에 따라 모양 만들기

무대가 있으며 onclick 이벤트가 원을 만듭니다. 마지막으로

/*LAYER*/ 
var layer = new Kinetic.Layer(); 
layer.add(new Kinetic.Rect({ 
    x: 0, 
    y: 0, 
    width: stage.width(), //full width 
    height: stage.height(), //full height 
    fill: 'yellow', //background color 
})); 
stage.add(layer); 

그리고 마커 만들기 : 내가 클릭이 요소 상에 있다면 알 수 있도록 e.target를 사용하는 tryed,하지만 작동하지 않습니다 :

/*STAGE*/ 
var stage = new Kinetic.Stage({ 
    container: 'container', 
    width: (window.innerWidth/100) * 80, 
    height: 200 
}); 
stage.on('click', function(e) { 
    if(e.target !== Kinetic.Circle) 
     createMarker(); 
}); 

가 그럼 난 계층이 onclick 이벤트가 제대로 작동합니다.

/*MARKERS CREATION*/ 
var createMarker = function(){ 
    var marker = new Kinetic.Circle({ 
     x: stage.getPointerPosition().x, 
     y: stage.getPointerPosition().y, 
     radius: 20, 
     fill: 'red', 
     draggable: true 
    }); 
    marker.on('click', function() { 
     alert("You clicked me!"); 
    }); 
    layer.add(marker); 
    layer.draw(); 
} 

따라서 문제는 작업을 수행 할 대상을 식별하는 방법입니까? 사전에 감사합니다,

e.target !== Kinetic.Circle 

는 항상 true를 돌려 createMarker()를 호출하는 이유입니다, e.target의

http://jsfiddle.net/gal007/xzwohvy9/6/

답변

1

유형 object하고 Kinetic.Circle의 유형은 function입니다.

작동합니다

e.target.className !== 'Circle' 

에 조건을 교체합니다.