2

我正在开发 libgdx 中的游戏,我的部分场景是这样的

1:我有 5 个方格,每 10 秒填充一次,一旦它们全部填满[50 秒],则什么也做不了。我通过将它们从默认的红色着色为蓝色来填充它们。

2:一个按钮,它有它的操作,其中一个操作是它将填充其中一个正方形(颜色从红色变为蓝色。)

这是设置

act(float)-------调用---> updateSquare

updateSquare ---> 检查自上次以来是否已经 10 秒,如果是,则抓住第一个可用的正方形并更改颜色。

buttonListener ----> 将可用的第一个方块的颜色从红色变为蓝色。

现在我的问题是它是否是线程安全的?这些线程会相互重叠吗?

假设我的前两个方块是红色的,其余的是蓝色的,所以第一个可用的是第三个,所以如果第一个updateSquare被调用,然后我点击按钮,那么两个新方块将变成蓝色,总共四个蓝色方块。

但是,如果两者同时发生(updateSquare 和 buttonClick),那么它们都只会使第三个正方形变为蓝色。

这种情况(重叠)可能吗?我的朋友不是,我也没有遇到这样的问题,但我不知道它是否是线程安全的?

4

1 回答 1

4

请参阅此链接

在调用 ApplicationListener.render() 之前,在渲染线程上分派事件。

这意味着您实际上在这里没有任何多线程。在一帧中收集所有事件(如您的 buttonListener 接收的事件)。并且在下一次渲染调用之前将它们分派给您的处理程序。

这是完全确定的,没有重叠。

于 2013-10-29T13:34:54.740 回答