Tôi đang cố gắng hiểu các lớp jQuery nhưng nó không hoạt động tốt.Tạo một lớp JavaScript đơn giản với jQuery
Mục tiêu của tôi là sử dụng một lớp học theo cách này (hoặc để tìm hiểu một cách tốt hơn để làm điều đó):
var player = new Player($("playerElement"));
player.InitEvents();
Sử dụng ví dụ của người khác, đây là những gì tôi đã cố gắng:
$.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
};
Mục tiêu cuối cùng là để một nhân vật di chuyển trên màn hình sang trái và phải bằng các chữ cái trên bàn phím A
và D
.
Tôi có cảm giác rằng tôi đang làm điều gì đó rất sai với "lớp học" nhưng tôi không chắc chắn tại sao.
(xin lỗi vì tiếng Anh của tôi)
'this' bên trong phương pháp dụ tham chiếu đối tượng thể hiện chính vì vậy bạn không thể sử dụng '$ (this) .keypress',' $ (this) .css', vd 'this' không tham chiếu đến một phần tử DOM hay chuỗi truy vấn. Các cuộc gọi hàm của bạn cũng sai, nó sẽ đọc 'này.MoveRight() 'nhưng khi bạn đang ở trong một trình xử lý jQuery đặt ngữ cảnh' this' này thành chính phần tử DOM, bạn sẽ cần gán giá trị 'this' này cho một biến một cấp trong chuỗi phạm vi để bạn có thể truy cập nó bên trong trình xử lý để gọi các phương thức 'MoveRight' /' MoveLeft' của nó. –
bạn có thể chỉ cho tôi cách bạn sẽ thay đổi mã của mình để khắc phục sự cố tôi đã thực hiện không? nó sẽ dễ dàng hơn nhiều cho tôi để xem những gì tôi đã làm worng nếu tôi có thể compre một mã tốt vs của tôi. (nếu không quá khó) – samy
Tôi có thể thử người đàn ông, nhưng nó gần gũi hơn với một viết lại hoàn chỉnh hơn là "sửa chữa". ': P' Tôi sẽ xem nếu tôi có thể làm một ví dụ đơn giản. –