모듈이 거의 없습니다. Shape 객체의 컨테이너 인 "Shapes.js"(모듈 "Shape.js") 사용자가 마우스 왼쪽 버튼을 클릭 할 때 좌표를 계산하는 "Mouse.js" 계산을 수행하고 해당 좌표가 모양에 속하는지 여부를 결정해야하는 모듈 "Selection.js"가 있습니다.Require.js, 모듈 의존성
// Mouse.js
define([], function() {
function Mouse(element, e) {
var offsetX = 0, offsetY = 0;
if (element.offsetParent !== undefined) {
do {
offsetX += element.offsetLeft;
offsetY += element.offsetTop;
} while ((element = element.offsetParent));
}
this.getMouseX = function() {
return e.pageX - offsetX;
}
this.getMouseY = function() {
return e.pageY - offsetY;
}
}
return Mouse;
});
// Selection.js
define(['modules/Shapes', 'modules/Mouse'], function(Shapes, Mouse) {
var selection;
document.getElementById('canvas').addEventListener('mousedown', function(e) {
selection = null;
var mouse = new Mouse(document.getElementById('canvas'), e);
var shapes = Shapes.getShapes();
for(var i=0; i<shapes.length; i++) {
if ((shapes[i].getX() <= mouse.getMouseX())
&& (shapes[i].getX() + shapes[i].getWidth() >= mouse.getMouseX())
&& (shapes[i].getY() <= mouse.getMouseY())
&& (shapes[i].getY() + shapes[i].getHeight() >= mouse.getMouseY())) {
selection = shapes[i];
break;
}
}
});
return selection;
});
내가 "모양"과 "모양"모듈을 게시하지 않습니다 작은이 질문을 유지하기 위해, 그들은하지 않습니다 중대한.
이제 "main.js"모듈에서 사용자 triger mousedown 이벤트가 발생했을 때 항상 선택한 요소 (또는 null)에 대한 참조가 필요하지만 가져올 수 없습니다. 어디서부터 시작해야할지 모릅니다. 내가 선택 모듈을 주 모듈에로드하면 나는 항상 정의되지 않을 것이다. 미리 감사드립니다. Katana314 @,이 같은 생각 않았다
편집을 (코드 조각은 Require.js을 통해 모든 일을하려고, 약간의 수정과 함께 시몬 Sarris 캔버스 튜토리얼입니다)?
// Selection.js (EDITED)
define(['modules/Shapes', 'modules/Mouse'], function(Shapes, Mouse) {
var selection;
return function(e) {
selection = null;
var mouse = new Mouse(document.getElementById('canvas'), e);
var shapes = Shapes.getShapes();
for(var i=0; i<shapes.length; i++) {
if ((shapes[i].getX() <= mouse.getMouseX())
&& (shapes[i].getX() + shapes[i].getWidth() >= mouse.getMouseX())
&& (shapes[i].getY() <= mouse.getMouseY())
&& (shapes[i].getY() + shapes[i].getHeight() >= mouse.getMouseY())) {
selection = shapes[i];
break;
}
}
return selection;
}
});
// Main.js
document.getElementById('canvas').addEventListener('mousedown', function(e) {
console.log(Selection(e)); // Shape... :D
});
나는 귀하의 설명을 완전히 이해하지 못한다는 것을 인정합니다. 좀 더 구체적으로 기재 할 수 있습니까? – Srle
그건 그렇고, 나는 선택에서 생성자 함수를 반환하고 싶지 않아요.왜냐하면 현재로서는 하나의 선택 만 존재할 수 있기 때문입니다. – Srle