这是我的run()函数:
@Override
public void run() {
while (true) {
long elapsed = TimeUtils.nanoTime() - startTime;
Texture currentFrame = connectedAnim.getFrame(elapsed);
textureToApplyTo = currentFrame;
}
}
在这个类的构造函数中,我已将textureToApplyTo
设置为主线程中的Texture变量。问题是,当我将run()函数中的textureToApplyTo
设置为currentFrame
时,它只会在我设置它的类中更改它。我认为问题是我正在创建变量{ {1}}在这个类中,以及主类,但我不知道我怎么做...我需要一种方法来改变主类中的textureToApplyTo
变量来自这个线程
答案 0 :(得分:3)
在textureToApplyTo声明中添加volatile keywork。喜欢这个
public static volatile Texture textureToApplyTo;
答案 1 :(得分:-1)
你应该把变量变成一个全局变量,所以当声明这个类时,你会有这样的东西:
public class yourClass
{
private textureToApplyTo;
public setTexture(Frame frame)
{
textureToApplyTo = frame;
}
}
执行此操作后,您可以使用run()
方法调用此方法。
@Override
public void run() {
while (true) {
long elapsed = TimeUtils.nanoTime() - startTime;
Texture currentFrame = connectedAnim.getFrame(elapsed);
yourClass.setTexture(currentFrame);
}
}