jQueryクラスを理解しようとしていますが、うまくいきません。jQueryでシンプルなJavaScriptクラスを作成する
が私の目標は、クラスをこのように使用するために(またはそれを行うには良い方法を学ぶこと)である。
var player = new Player($("playerElement"));
player.InitEvents();
は、他の人の例を使用して、これは私が試したものです:
$.Player = function ($) {
};
$.Player.prototype.InitEvents = function() {
$(this).keypress(function (e) {
var key = e.which;
if (key == 100) {
MoveRight();
}
if (key == 97) {
MoveLeft();
}
});
};
$.Player.prototype.MoveRight = function() {
$(this).css("right", this.playerX += 10);
}
$.Player.prototype.MoveLeft = function() {
$(this).css("right", this.playerX -= 10);
}
$.Player.defaultOptions = {
playerX: 0,
playerY: 0
};
最終的な目標は、キーボードの文字「A
」と「D
」を使用して、文字を画面上で左右に動かすことです。
私はこの "クラス"で何か非常に間違っていると感じていますが、私はなぜそれがわかりません。
'this'インスタンスメソッド内でインスタンスオブジェクトを参照しますそれ自身で '$(this).keypress'、' $(this).css'などは 'this'はDOM要素やクエリ文字列を参照しないので使用できません。あなたの関数呼び出しも間違っています。これは 'これを読むべきです。MoveRight() 'しかし、' this'コンテキストをDOM要素自体に設定するjQueryハンドラの中にあるように、スコープチェーン内のレベルアップする変数にインスタンスの 'this'を割り当てる必要がありますハンドラの内部で 'MoveRight' /' MoveLeft'メソッドを呼び出すことができます。 –
私が行った問題を解決するためにコードを変更する方法を教えていただけますか?私が良いコードと私のコードを比較することができれば、私が何をしたのかを見るのがずっと簡単になります。 (あまりにも難しくない場合) – samy
私は人を試すことができますが、それは "修正"より完全な書き換えに近いです。 ':P'私は簡単な例を作ることができるかどうかを見ていきます。 –