Sto cercando di capire le classi jQuery ma non sta andando molto bene.Creazione di una semplice classe JavaScript con jQuery
Il mio obiettivo è quello di utilizzare una classe in questo modo (o per imparare un modo migliore per farlo):
var player = new Player($("playerElement"));
player.InitEvents();
Utilizzando esempi di altre persone, questo è quello che ho provato:
$.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'obiettivo finale è quello di far muovere un personaggio sullo schermo a sinistra ea destra usando le lettere della tastiera A
e D
.
Ho la sensazione che sto facendo qualcosa di molto sbagliato con questa "classe" ma non sono sicuro del perché.
(mi dispiace per il mio inglese)
'this' all'interno dei metodi di istanza fa riferimento l'oggetto istanza così da non poter usare '$ (this) .keypress',' $ (this) .css' ecc perché 'this' non fa riferimento a un elemento DOM né a una stringa di query. Anche le chiamate alle funzioni sono sbagliate, dovrebbe leggere "questo".MoveRight() 'ma siccome sei all'interno di un gestore jQuery che imposta il contesto' this' sull'elemento DOM stesso, dovrai assegnare l'istanza 'this' a una variabile di livello superiore nella catena dell'ambito in modo che tu possa accedervi all'interno del gestore per chiamare i suoi metodi 'MoveRight' /' MoveLeft'. –
puoi mostrarmi come cambierai il mio codice per risolvere il problema che ho fatto? sarà molto più facile per me vedere che cosa ho fatto se potessi compre un buon codice contro il mio. (se non è troppo difficile) – samy
Posso provare l'uomo, ma è più vicino a una riscrittura completa che a una "correzione". ': P' Vedrò se posso fare un semplice esempio. –