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

标签 javascript html5-canvas easeljs sprite-sheet

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/

相关文章:

javascript - 使用 PhantomJS 获取 AdSense 广告的 DOM

javascript - React Native - 构建应用程序

Javascript 执行上下文

javascript - Canvas toDataUrl 方法是否操纵 rgba 值?

javascript - 使用 jQuery 将 HTML 属性设置为 JSON 对象

javascript - 如何将径向 Canvas 渐变与 Chart.js 圆环图一起使用?

javascript - EaselJS 自定义字体行高跨浏览器问题

javascript - 如何覆盖 ngx-quill 编辑器链接并使其在同一选项卡中打开?默认情况下它在新选项卡中打开

javascript - EaselJS - 舞台鼠标悬停

javascript - EaselJS/canvas 在拖放过程中更改元素焦点