La création d'une simple classe de JavaScript avec jQuery

J'essaie de comprendre jQuery classes, mais il ne va pas très bien.

Mon but est d'utiliser une classe de cette façon (ou à apprendre une meilleure façon de le faire):

var player = new Player($("playerElement"));
player.InitEvents();

L'aide d'autres exemples, c'est ce que j'ai essayé:

$.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
};

L'objectif final est d'avoir un personnage se déplaçant sur l'écran à gauche et à droite à l'aide du clavier de lettres A et D.

J'ai le sentiment que je suis en train de faire quelque chose de très mal avec cette "classe"
mais je ne suis pas sûr pourquoi.

(désolé pour mon anglais)

this l'intérieur de l'instance méthodes de références de l'instance de l'objet lui-même de sorte que vous ne pouvez pas utiliser $(this).keypress, $(this).css etc comme this ne faisant pas référence à un élément du DOM, ni de chaîne de requête. Vos appels de fonction sont trop mal, il faut lire this.MoveRight() mais comme vous êtes à l'intérieur d'un jQuery gestionnaire qui définit la this contexte de l'élément DOM lui-même, vous devez l'affecter l'instance this à une variable d'un niveau dans le champ d'application de la chaîne de sorte que vous pouvez accéder à l'intérieur du gestionnaire d'appeler son MoveRight/MoveLeft méthodes.
pouvez-vous me montrer comment vous allez modifier mon code pour résoudre le problème j'ai fait? il sera beaucoup plus facile pour moi de voir ce que j'ai fait worng si je pouvais une un bon code vs la mienne. (si ce n'est pas trop dur)
Je peux essayer de l'homme, mais il est plus proche d'une réécriture complète que celle d'un "fix". :P Je vais voir si je peux prendre un exemple simple.
Voici la version commentée jsfiddle.net/gVhj8

OriginalL'auteur samy | 2013-01-19