EaselJS(0.8.2.min及以上)-当角色移动时,移动JSON生成的精灵贴图XY

EaselJS (0.8.2.min and up)- Moving JSON generated Sprite map XY when character moves

本文关键字:移动 JSON XY 精灵 角色 min EaselJS      更新时间:2023-09-26

画架js-0.8.2.min使用了平铺JSON导出的平铺映射。

我已经使用Sprite Class生成了tile贴图(Bitmap Class现在不推荐使用,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的类,我认为这是我可能需要的解决方案。所以Map被生成,在右箭头键上侦听器按下,现在我尝试了:

//设置贴图spriteContainer.x=spriteContainer.x+=charWalkSpeed;

我的调试器显示,当我按下右箭头键时,X坐标确实会上升,但贴图不会移动,而是保持静止。我已经在这上面坚持了一个月了,我完全被卡住了。到目前为止,我有一个工作示例,但我认为提供的源代码可能足够

嘿,想通了。该死的两个月终于来了!

currentMap.pparent.x!所以事情是平移他们应该,我甚至喜欢它移动碰撞对象的事实!遗憾的是,它移动了标题栏,因此生成了一个新函数,告诉标题栏它需要保持静态。还不错。

我的下一个任务是让tilemap在到达tilemap末尾时不平移。所以你看不到画布背景。我的收割台是静态的,所以我是如何进行平移的,这可能会告诉我如何防止收割台流血。