当前位置: 首页 > 知识库问答 >
问题:

层更改LibGdx时执行元消失

封俊艾
2023-03-14

我的游戏已经很先进了,但我现在面临一个问题,我无法解决。我有一个迷宫和一个角色在里面。对于迷宫的每一行,我为舞台演员定义了一个组,并将该组中的每一个演员(例如墙)放入该组中。之后,我以一个数组(Group[]layers)结束,它的大小等于迷宫中的行数,并将每个组放入我的阶段。在此之前,它的工作是完美的,我的墙被绘制,我的角色也是,他的头出现在第一排墙后面,由于层。

但当我的角色换行时,我想改变他的“层”,所以它在舞台上的顺序。我的想法是做:层[previousRowOfTheCharacter].RemoveActor(this);层[newRowOfTheCharacter].AddActor(this);

问题来了...AddActor显然在添加之前删除了actor。问题是我的角色从来没有加入舞台,因为他没有画出来。

要快速总结一下:static group[]layers=group[numberOfRows];阶段阶段=新阶段();通过层[row].addActor()将所有要绘制的参与者添加到层中;(works)通过stage.addActor(group)添加阶段中的所有组;(作品)

字符更改行时:层[previousRow].RemoveActor(this);图层[newRow].AddActor(this);(不起作用,字符消失)

我不能使用Stage.AddActor,因为它不允许我点播演员。我通过一个比较器读到它是可能的,但它似乎仍然是一个很大的混乱。我试过了,我现在的方式对我来说似乎更清楚了。

非常感谢你的回答。

共有1个答案

邢浩邈
2023-03-14

LibGDX中的actor具有Z索引,其中较高的actor被绘制在较低的actor之上,您可以通过将每个设置为基于它所在的行具有特定的Z索引,并使播放器actor单独运行,并具有对应于它所在行的Z索引来使用这一点。

 类似资料:
  • 我正在制作一个2D rpg游戏与盒。所以,我有个问题。当我的一个身体(角色)与另一个身体(一扇门)碰撞时地图需要改变,我是否应该为地图创建新的屏幕并改变它们?还是有更简单的解决方案?

  • libgdx.我不想有一个演员在舞台上得到触摸输入。在将stage添加到代码之前使其工作。 :

  • 我预计从下面的代码中,由于超时,可转换的未来将停止处理。但我可以看到取消没有任何影响。 我可以看到2个完全期货仍在运行。

  • 问题内容: 我有一个,并且有一个侦听器连接到它。 现在,即使用户只是重新选择了先前选择的值,每次用户从下拉菜单中“选择”某项时,事件都会触发。 如果组合框的选定值与选定前的值不同,有什么方法可以仅触发事件? 我想我可以将组合框的值存储在不同的字段中,并在每次事件触发时将其进行比较,这似乎有点过头了。我有20个左右这样的组合框。我宁愿不要再有20个变量来存储值,这样事件就不会触发。 一定有更好的方法

  • 我是javascript新手,这可能是一个简单的问题。。。 我在这里所做的是修改div(#box)的css样式,这取决于你所在页面的位置( 我试图实现的是向#box添加多个css更改,并每次执行一个随机更改。例如,每次从最顶端滚动通过200,div的显示高度为:绿色背景为“100px”,蓝色背景为“200px”,或红色背景为“300px”。希望这有意义。。。。

  • 数组仍然具有它的原始值,是否有任何方法可以通过迭代函数对数组的元素进行写访问?