2

我刚刚开始将其用作年轻人的教育工具,并在尝试克隆精灵时遇到奇怪的行为。

我为 sprite_1 中的位置 x,y 设置了一个全局变量,并克隆了一个 sprite_2 对象。该对象立即将全局 x,y 复制到本地 x,y 并退出。稍后 sprite_2 使用存储的本地 x,y 进行渲染。

sprite_1:

在此处输入图像描述

sprite_2:

在此处输入图像描述

根据这个可复制的小示例,我希望四个精灵在屏幕上对角线向上/向右克隆。相反,我似乎得到了四个 sprite_2 对象都在彼此之上:

在此处输入图像描述

如果我在 clone(x,y) 函数的末尾添加 1 秒的延迟,但一切都很好:

在此处输入图像描述

在此处输入图像描述

由于所有四个 sprite_2 对象似乎都是放置最后一个克隆的位置,我怀疑这些克隆不是立即创建的,而是在某个时间一次性创建为一个批次,因此都从全局变量中获取最后一个坐标_clone_enemy_x/y。

是这样吗?有没有办法规避这种行为或解决方案是什么?

4

1 回答 1

0

对于这个问题,我有两种可能的解决方案:

  1. 转到“define clone()()”块,右键单击它,打开高级下拉菜单,然后勾选“run without screen refresh”。
  2. 一起摆脱自定义块,但在实际代码中使用该块的原始源。

我希望这有帮助!

于 2018-05-14T08:44:52.247 回答