Java 从ArrayList中删除的图像仍在显示
我正在制作一个2D游戏,其中玩家的精灵存储在数组列表中。由于玩家有多个状态,我想在使用时删除以前的状态。我的ArrayList为:Java 从ArrayList中删除的图像仍在显示,java,image,arraylist,javafx,Java,Image,Arraylist,Javafx,我正在制作一个2D游戏,其中玩家的精灵存储在数组列表中。由于玩家有多个状态,我想在使用时删除以前的状态。我的ArrayList为: List<Image> x = new ArrayList(); 但这些图像仍然显示,而不是下一个图像集 可能是某种缓存吗?如果是,如何删除此缓存以便应用新图像 我的精灵图像声明如下(显示一个图像,但所有图像都类似): 我不知道我是否理解你 例如,您使用要在图像视图上设置的列表的第一个元素(设置正确),然后从列表中删除该元素 此时,您是否希望图像也从I
List<Image> x = new ArrayList();
但这些图像仍然显示,而不是下一个图像集
可能是某种缓存吗?如果是,如何删除此缓存以便应用新图像
我的精灵图像声明如下(显示一个图像,但所有图像都类似):
我不知道我是否理解你 例如,您使用要在
图像视图
上设置的列表的第一个元素(设置正确),然后从列表中删除该元素
此时,您是否希望图像也从ImageView
中删除
为什么要删除
该列表包含对对象(指针)的引用。从列表中设置图像时,引用将传递到ImageView,因此现在它也将指向该对象。如果从列表中删除引用,则无所谓,ImageView
仍将指向该引用
因此,您可以在删除元素后显式调用setImage
,或者使用observeList
并将图像设置为remove(类似以下内容):
ObservableList iList=FXCollections.observableArrayList();
iList.addListener(新的ListChangeListener()
{
@凌驾
public void onChanged(javafx.collections.ListChangeListener.change)从列表中删除图像后,是否调用了someImageView.setImage并对其进行休息?
for(int i = 0; i < 6; i++)
x.remove(y);
Image someImg = new Image("path", true, false, true);
ObservableList<Image> iList = FXCollections.observableArrayList();
iList.addListener(new ListChangeListener<Image>()
{
@Override
public void onChanged(javafx.collections.ListChangeListener.Change<? extends Image> change) {
while(change.next())
{
if(change.wasRemoved())
imgView.setImage(iList.get(0));
}
});
}