Sau một năm nghiên cứu và thử nghiệm thông qua thử và lỗi, tôi cảm thấy rằng tôi bắt đầu hiểu JavaScript nhiều hơn một chút. Vì vậy, bây giờ, tôi muốn thử tay của tôi bằng văn bản một trò chơi nền tảng 2D đơn giản (nghĩ Super Mario World hoặc Sonic the Hedgehog). Đối với điều này, tôi sẽ sử dụng thư viện EaselJS.HTML5 Canvas: Di chuyển/panning thế giới bằng các phím mũi tên trong EaselJS
Tôi đang cố gắng tìm ra cách tôi có thể di chuyển/xoay 'thế giới' trong một khung bằng cách sử dụng các phím mũi tên trái và phải. Tôi biết làm thế nào tôi có thể chạy một chức năng trên keydown
của phím mũi tên, nhưng tôi không quá chắc chắn làm thế nào tôi nên tiếp cận di chuyển/panning.
Tôi có nên điều chỉnh vị trí/tọa độ của mỗi điều duy nhất trong canvas khi một phím được nhấn? Hoặc tôi có nên đặt tất cả mọi thứ trong một thùng chứa và di chuyển vị trí/tọa độ của vùng chứa không?
Tôi sẽ đánh giá cao mọi thứ thúc đẩy tôi đi đúng hướng. Tyvm :)
cập nhật với câu trả lời The chosen answer below xác nhận rằng tôi thực sự phải chịu đựng tất cả mọi thứ trong một container vì vậy mà tôi có thể thiết lập vị trí của container đó. Đây là mã tôi soạn thảo, và nó hoạt động.
// Canvas
var stage = new createjs.Stage('game');
createjs.Ticker.addEventListener('tick', tick);
function tick(event) {
stage.update();
}
// Cave
var cave = new createjs.Bitmap('img/cave.png');
cave.x = cave.y = 0;
// World
// Pans World if the left or right arrow keys are pressed
var world = new createjs.Container();
world.x = 0;
world.y = 0;
world.addChild(cave);
stage.addChild(world);
$(window).keydown(function(e){
switch (e.which || e.keyCode){
case 39: // right arrow key
world.regX += 10;
break;
case 37: // left arrow key
world.regX -= 10;
break;
}
});
Tôi đã thử cập nhật world.x
cũng như world.regX
. Bằng cách nào đó, world.regX
dường như mượt mà hơn.
Bây giờ tôi sẽ nghe rất ngu ngốc, nhưng scrollableObjectContainer là gì? Tôi không thể tìm thấy nó trong API EaselJS hoặc trên Google. – AKG
Chỉ là một container, tôi đặt tên nó như thế. – rpg600
bất kỳ ý tưởng làm thế nào tôi có thể đi về việc thêm tween? Tôi đang thử các biến thể khác nhau của 'createjs.Tween.get (world) .to ({regX: world.regX + 10}, 100);' nhưng hiểu rõ, điều này nhất định bị lag (vì một keydown điển hình được giữ cho nhiều giây thay vì chỉ một lần truy cập) – AKG