自分のJavaScriptオブジェクトインスタンスが自分のイベントを処理したいと思っています。私はそれをこのように構造化しました。純粋なJavaScriptオブジェクト(非DOM)でKeypressイベントシステムを行う方法
class Player{
constructor(length=2)
{
this.length=length;
this.plHead = new PlayerHead(5,5,"#AA0000");
this.plBody = new PlayerBody(this.plHead.posX,this.plHead.posY, this.length);
this.plDir = "xAx";
this.plSpeed =0.25;
this.addEventListener("keydown",this.KeyPush);
}
//TEMPDATA JUST TO TEST IF THE IDEAR WORKS
PlMove(dir=0)
{
switch(dir)
{
case 0:
this.plHead.posX = this.plHead.posX +this.plSpeed;
break;
case 1:
this.plHead.posY = this.plHead.posY -this.plSpeed;
break;
case 2:
this.plHead.posX = this.plHead.posX -this.plSpeed;
break;
case 3:
this.plHead.posY = this.plHead.posY +this.plSpeed;
break;
}
}
//Player keypress
KeyPush(evt)
{
switch(evt.keyCode)
{
case 37:
this.PlMove(2);
break;
case 38:
document.getElementById("scoreDiv").innerHTML = this.title;
break;
case 39:
this.PlMove(0);
break;
case 40:
this.PlMove(3);
break;
}
}
}
ただし、this.PlMoveは関数ではないというエラーが表示されていました。 さらに詳しい研究の後、私はこれを知った。クラス内にあってもJavaScriptクラスオブジェクトではなくDOMドキュメントを参照していました。
これで、イベントリスターを純粋なJavaScriptオブジェクトに置く方法を模索しようとしています.DOMオブジェクトではありません 私は自分のイベントをすべて作成する必要がありますが、私はそれを行う方法もありません。
は 'addEventListener'は、DOMオブジェクトを対象としています。プレーンオブジェクトのイベントを処理する場合は、https://www.npmjs.com/package/event-emitterのような他のイベントメカニズムを考慮する必要があります。この質問は、https://stackoverflow.com/questions/20835768/addeventlistener-on-custom-object –
の複製となります。あなたが私に与えたリンクはnpmを使用します。 node.jsを使用していないコンピュータでもコードが実行されますか? – skyline