В зависимости от того, что вы действительно хотите отобразить, вы можете разделить ваш контент на плитки.Так работает Google Maps, каждый раз, когда карта перемещается, программа определяет, какие плитки видны на экране, и загружает их. Любые маркеры или наложения на карте уведомляются о перемещении карты и определяют, где их новое местоположение.является.Если их местоположение находится за пределами экрана, их можно удалить с холста.Например, ширина всех плиток на уровне масштабирования 20 на Картах Google составляет (256 пикселей * 2 ^ 20), что равняется 268 435 456 пикселей.
По сути, вам просто нужно создать специальный Sprite, который отслеживаетфактическое положение x, y, в котором оно должно быть расположено.Каждый раз, когда контейнер перемещается, вы просто перебираете все дочерние объекты и определяете, куда их поместить.
function onCanvasScroll() {
//determine the top left coordinates of the canvas
//you will figure out how to do this depending on how the scrolling window
//is implemented
var canvas_scroll_x;
var canvas_scroll_y;
//create a bounding box for the canvas
var view_bounds = new Rectangle(canvas_scroll_x, canvas_scroll_y, canvas.width, canvas.height);
for (child in canvas) {
var x = child.actual_x - view_bounds.x;
var y = child.actual_y - view_bounds.y;
var childBounds = new Rectangle(x, y, child.width, child.height);
//determine if the component is visible on screen
if (view_bounds.intersects(child_bounds)) {
child.visible = true;
child.x = x;
child.y = y;
}
else {
child.visible = false;
}
}
}
Так что если у вас есть холст, который расположен в (100, 20000), спрайт, которыйрасположенный в (300, 20100) и окне (640,408), вы поместите его в (200, 100), и он будет виден на экране.
Вместо того, чтобы просто устанавливать видимое значение в true или false, лучшим подходом будет полное удаление элементов с холста, когда они не находятся в границах представления.