androidlibgdx-为什么sequence()方法在代码中使用run作为单独的线程?

androidlibgdx-为什么sequence()方法在代码中使用run作为单独的线程?,android,libgdx,sequence,Android,Libgdx,Sequence,我正在读Libgdx游戏书。在关于动画的最后一章中,以下代码 用于添加序列动作。但是我不明白它是怎么工作的?能给我解释一下吗。 目的何在? 谢谢 本书解释了以下内容: 我们总是向序列中添加run()操作。run()操作采用一个Runnable,在Java中用于将要在单独线程中执行的代码放入。我们使用此操作和条件延迟()操作来调用Play和Options按钮上的setTouchable(),这些按钮控制按钮是否接收和响应触摸和鼠标单击。最后,存储在seq中的sequence()操作将作为新操作添加

我正在读Libgdx游戏书。在关于动画的最后一章中,以下代码 用于添加序列动作。但是我不明白它是怎么工作的?能给我解释一下吗。 目的何在? 谢谢

本书解释了以下内容:


我们总是向序列中添加run()操作。run()操作采用一个Runnable,在Java中用于将要在单独线程中执行的代码放入。我们使用此操作和条件延迟()操作来调用Play和Options按钮上的setTouchable(),这些按钮控制按钮是否接收和响应触摸和鼠标单击。最后,存储在seq中的sequence()操作将作为新操作添加到stage。

此操作不会在其他线程中执行。runnable只是一个用于执行序列的接口。因此,如果您添加了一个runnable,则序列知道它可以在执行操作(自定义runnable操作)时调用该对象上的
.run()
。这就是全部。因为在java中,runnable接口通常用于线程的可执行任务,我想他在书中提到了这一点

通常,libgdx使用一个线程来执行所有操作。序列也不是平行的。此外,几乎所有libgdx类(如果我知道正确的话,资产加载器除外)都不是threadsave

但是为了理解libgdx,您可以查看libgdx的代码,看看发生了什么,例如,它是否是线程化的

我希望这回答了你的问题

SequenceAction seq = sequence();

if (visible) 

seq.addAction(delay(delayOptionsButton + moveDuration));

seq.addAction(run(new Runnable() { 

public void run () { 

btnMenuPlay.setTouchable(touchEnabled); 

btnMenuOptions.setTouchable(touchEnabled); 

} 

})); 

stage.addAction(seq);