Próbuję zrozumieć klasy jQuery, ale to nie idzie zbyt dobrze.Tworzenie prostej klasy JavaScript z jQuery
Moim celem jest użycie klasy w ten sposób (lub nauczyć się lepszego sposobu, aby to zrobić):
var player = new Player($("playerElement"));
player.InitEvents();
Korzystanie przykłady innych ludzi, to jest to, czego próbowałem:
$.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
};
Celem końcowym jest przeniesienie postaci na lewy i prawy ekran za pomocą liter klawiatury A
i D
.
Mam przeczucie, że robię coś bardzo nie tak z tą "klasą" , ale nie jestem pewien dlaczego.
(przepraszam za mój angielski)
'this' wewnątrz metody instancji odwołuje się do obiektu instancji więc nie można użyć '$ (this) .keypress',' $ (this) .css' itp, ponieważ 'this' nie odwołuje się do elementu DOM ani do ciągu zapytania. Twoje wywołania funkcji również są błędne, należy przeczytać "to.MoveRight() 'ale gdy jesteś wewnątrz programu obsługi jQuery, który ustawia kontekst' this' na sam element DOM, będziesz musiał przypisać instancję 'this' do zmiennej o poziom wyżej w łańcuchu zasięgu, abyś mógł uzyskaj dostęp do wewnątrz programu obsługi, aby wywołać metody 'MoveRight' /' MoveLeft'. –
czy możesz pokazać mi, jak zmienisz mój kod, aby rozwiązać problem, który popełniłem? znacznie łatwiej będzie mi zobaczyć, co zrobiłem, gdybym mógł przedstawić dobry kod w stosunku do mojego. (jeśli nie jest to zbyt trudne) – samy
Mogę spróbować człowieka, ale jest on bliższy kompletnej przeróbce niż "poprawka". ': P' Zobaczę, czy mogę zrobić prosty przykład. –