私はおそらくいくつかの概念を誤解していましたが、stackoverflowで4つのトピックを読んだ後、 "typescriptでプライベートメンバー"のドキュメントを読んだ後も - 私はまだ混乱しています。Typescriptプライベートメソッドは "関数ではありません"
私は単純なマウスIO(最初のスクリプトスクリプト)を書いています。これは、誤動作マウスクラスの完全なコードです:
class Mouse {
public left: MouseKeyData = new MouseKeyData();
public right: MouseKeyData = new MouseKeyData();
public whell: MouseKeyData = new MouseKeyData();
public x: number = 0;
public y: number = 0;
private crossBrowserButton(e: any):string {
switch (e.button) {
case 0: return 'left';
case 1: return 'whell';
case 2: return 'right';
case 3: return 'back';
case 4: return 'forward';
}
return 'none';
}
private onMouseDown(e: any):void {
let target: MouseKeyData = this.left;
try {console.log(this.crossBrowserButton(e))} catch (a) {console.warn(a)} finally {}
if(target) {
target.press();
}
}
private onMouseUp(e: any):void {
let target: MouseKeyData = this.left;
if(target) {
target.release();
}
}
private onMouseMove(e: any): void {
this.x = e.pageX;
this.y = e.pageY;
}
public constructor() {
let anchor = document.body;
anchor.addEventListener('mousedown', this.onMouseDown);
anchor.addEventListener('mouseup', this.onMouseUp);
anchor.addEventListener('mousemove', this.onMouseMove);
}
}
私はonMouseDown
とonMouseUp
内this.crossBrowserButton(e)
を呼び出すために使用されるが、私は唯一のthis.crossBrowserButton is not a function(…)
を得ました。
私はthis
スコープをいくつか失ったと思いますが、this.left
は完全に機能します。
ありがとうございます!
私は、このエラーが低技能の世界では一般的で、何が間違っているかを把握しているので、この質問を閉じるよう投票しました。 –