easeljs-0.8.2.min 使用了 Tiled JSON 导出的 Tile-map。
我已经使用 Sprite 类生成了图 block map (位图类现在已弃用,Ya 花了一段时间才弄清楚)。所以它是标准的 32x32 正方形生成的正交。
我有一个通过键盘监听事件移动的 Angular 色 SpriteSheet。当我向右移动 Angular 色时,我希望生成的 map 在 Angular 色移动时平移并移动,因此看起来 Angular 色正在旅行,您可以看到 Canvas 外的 map 的其余部分。
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 的类,我想这就是我可能需要让它工作的解决方案。因此, map 已生成,并且在右箭头键监听器上按下,现在我尝试了:
//设置 map spriteContainer.x = spriteContainer.x += charWalkSpeed;
我的调试器显示,当我按右箭头键时,X 坐标确实会上升,但是 map 不会移动并且保持静止。已经被困在这个问题上一个月了,我完全被困住了。我有一个到目前为止所拥有的工作示例,但我认为提供的源代码可能已经足够了
最佳答案
呵呵,明白了。该死的两个月终于来了!
currentMap.parent.x!所以事情正在按其应有的方式平移,我什至喜欢它也移动碰撞对象这一事实!遗憾的是它会移动标题栏,因此创建一个新函数来告诉标题栏需要保持静态。还不错。
我的下一个任务是让图 block map 在到达图 block map 的末尾时不平移。所以你看不到 Canvas 背景。我的标题是静态的,所以如何进行平移可能会告诉我如何防止平移出血。
关于javascript - EaselJS(0.8.2.min 及以上)- 当角色移动时移动 JSON 生成的 Sprite 贴图 XY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434077/