easeljs-0.8.2.min Использована плитка с плиточным покрытием JSON.EaselJS (0.8.2.min и выше) - Перемещение JSON сгенерированной карты Sprite XY при перемещении персонажа
У меня есть карта плитки, уже сгенерированная с использованием класса Sprite (класс битмапа устарел сейчас, а Ya потребовалось некоторое время, чтобы понять). Таким образом, он является стандартным 32x32 квадратным сгенерированным ортогональным.
У меня есть персонаж SpriteSheet, который перемещается при прослушивании с клавиатуры. Когда я перемещаю символ Вправо, я хочу, чтобы карта, которая была сгенерирована для панорамирования и перемещения, когда персонаж делает это, так что он выглядит как персонаж, и вы можете увидеть остальную часть карты, которая находится на холсте.
spriteContainer = new createjs.Container();
for (var y = 0; y < layerData.height; y++) {
for (var x = 0; x < layerData.width; x++) {
// create a new Bitmap for each cell
currentMap = new createjs.Sprite(tilesetSheet);
// layer data has single dimension array
var idx = x + y * layerData.width;
// tilemap data uses 1 as first value, EaselJS uses 0 (sub 1 to load correct tile)
tileLoad = layerData.data[idx] - 1;
currentMap.gotoAndStop(tileLoad);
// orthogonal tile positioning based on X Y order from Tiled
if(moveX == undefined || moveX == 0){
moveX= 0;
} else {}
if(moveY == undefined || moveY == 0){
moveY= 0;
} else {}
currentMap.x = (x * tilewidth - x) + moveX;
currentMap.y = (y * tileheight) + moveY;
// Pan X & Y
// X Minus Pans Right
// Y Minus Pans Down
// currentMap.x = currentMap.x + 1;
// currentMap.y = currentMap.y - 2;
mapX = currentMap.x;
mapY = currentMap.y;
currentMap.setBounds(mapX, mapY, tilewidth, tileheight);
spriteContainer.addChild(currentMap);
// Add bitmap to stage
stage.addChild(currentMap);
}
}
Так что я нашел в EaselJS имеет класс с именем, SpriteContainer, я имею в виду, что это решение, которое я, возможно, потребуется, чтобы получить эту работу. Таким образом, карта генерируется, а справа стрелка - клавиша для нажатия. Теперь я попытался:
// Set Map spriteContainer.x = spriteContainer.x + = charWalkSpeed;
Мой отладчик показывает, что координаты X поднимаются, когда я нажимаю клавишу со стрелкой вправо, однако карта не перемещается, и она остается неподвижной. Застрял на этом в течение месяца, и я абсолютно застрял. У меня есть рабочий пример того, что у меня есть до сих пор, но я думаю, что поставляемый исходный код может быть достаточным.
SpriteContainer - это замена контейнера, который использует метод WebGL для рендеринга быстрее. Я буду придерживаться спрайта. – Lanny
Как вы перемещаете спрайт? Вы увеличиваете положение x при нажатии клавиши? Вы обновляете сцену после ее изменения? Можете ли вы опубликовать этот код? – Lanny
Ну, да, класс спрайтов повторяется снова и снова за квадрат. Символ добавляется как: 'code' HeroXCoordinates = HeroPlay0.x + = charWalkSpeed; '/ code' Да, при нажатии клавиши, который делает gotoAndPlay в пресс-релизе, персонаж использует класс SpriteSheet, потому что у него есть анимации, специфичные для того, что он делает.
Моя идея с контейнером состоит в том, чтобы удерживать все эти квадраты и перемещать затем x или y. В вышеприведенном коде позиция имеет значение: 'code' currentMap.x = currentMap.x + 1; // currentMap.y = currentMap.y - 2; '/ code' – l3l00