1
그래서 간단한 html5 기반 게임을 만들어 javascript 모듈 패턴과 html5 캔버스를 실험하고 첫 번째 장애물을 맞았습니다. 캔버스 위에 mousemove 이벤트를 듣고 있습니다.어떻게 이벤트 함수의 모듈 패턴에서 함수를 호출 할 수 있습니까?
init: function() {
var gameCanvas = document.getElementById("gameCanvas");
gameCanvas.addEventListener("mousemove", this.redrawAvatar);
}
내가하고있는 일은 내 아바타가 캔버스 위로 마우스 포인터를 움직 이도록하는 것입니다.
문제는 그 다음 내가 그렇게처럼 redrawAvatar 함수 내부에서 호출하고자 내 모듈의 여러 기능을 가지고있다: redrawAvatar 내부의 객체가 더 이상 내 모듈이 아니라 동안
redrawAvatar: function (mouseEvent) {
var gameCanvas = document.getElementById("gameCanvas"),
avatarCoord = {x: mouseEvent.offsetX, y: mouseEvent.offsetY},
enemyCoord = {x: 100, y: 100};
this.clear(gameCanvas);
this.drawAvatar(avatarCoord);
this.drawEnemy(enemyCoord);
if (that.isCollision({coord: avatarCoord, size: 30}, {coord: enemyCoord, size: 30})) {
alert("Avatar died, collided with enemy");
}
}
을
var MyGame = (function() {
var Game = {
draw: function (image, coord) {},
drawAvatar: function (coord) {},
clear: function (canvas) { canvas.width = canvas.width + 1 - 1;},
drawEnemy: function (xPos, yPos) {},
isCollision: function (a, b) {},
redrawAvatar: function (mouseEvent) {
var gameCanvas = document.getElementById("gameCanvas"),
avatarCoord = {x: mouseEvent.offsetX, y: mouseEvent.offsetY},
enemyCoord = {x: 100, y: 100};
this.clear(gameCanvas);
this.drawAvatar(avatarCoord);
this.drawEnemy(enemyCoord);
if (that.isCollision({coord: avatarCoord, size: 30}, {coord: enemyCoord, size: 30})) {
alert("Avatar died, collided with enemy");
}
},
init: function() {
var gameCanvas = document.getElementById("gameCanvas");
gameCanvas.addEventListener("mousemove", this.redrawAvatar);
}
};
(function() {
var that = Game;
that.init();
}());
}());
가 어떻게 기능에 어떻게해야합니까 : 대신 이벤트 (이 경우 캔버스) 여기
의 소스 내 모듈의 본질이다 내가 호출하고 싶은 모듈에?
딱! 그리고 mdn에 대한 좋은 언급. – Rythmic