問題を説明するためにコードを単純化しました。
function SnakeGame ()
{
this.snakeDirection = 'right';
this.Init = function ()
{
window.addEventListener('keydown', this.keyboardInput, false);
}
this.keyboardInput = function (event, SnakeGameObject)
{
console.log(SnakeGameObject); //Error since I can't pass this variable...
console.log(event.keyCode); //Works
}
}
this.keyboardInput 関数内で、変数 this.snakeDirection を変更しようとしました。問題は、SnakeGame オブジェクトへの参照を取得できないことです。これは、keyboardInput 関数内ではウィンドウを参照します。ウィンドウを参照する理由は理解できますが、解決策が思いつきません...
完全なコードはここで見ることができます: http://eriknijland.nl/stackoverflow/snake_event_listener/