我一直在尝试使用javafx +线程的老虎机。
我的Reel
班extends Thread
。这是卷轴类的运行方法。它基本上旋转直到用户点击真实。卷轴类具有activeImage(对象属性)
@Override
public void run() {
spinning = true;
spin();
}
public void spin() {
while (spinning) {
for (Symbol symbol : symbolList) {
System.out.println("Running");
activeImage.set(symbol.getImage());
try {
Thread.sleep(1000); // or whatever
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
我已经在GUI类中实现了一个Listner。
slotMachineHandler.getSlotMachine().getReelList().get(0).activeImageProperty().addListener(new ChangeListener<Image>() {
@Override
public void changed(ObservableValue<? extends Image> observable, Image oldValue, Image newValue) {
Platform.runLater(new Runnable() {
@Override
public void run() {
activeImg1.setImage(slotMachineHandler.getSlotMachine().getReelList().get(0).getActiveImage());
}
});
}
});
但我的问题是当我用不同的线程启动卷轴时,没有调用监听器。但是当我尝试使用主线程设置活动图像时,侦听器会被完美地调用。我也用过绑定。结果相同。如果有人能给我一些亮光,那真是太好了;)