2016-04-09 16 views
-1

Oyuncular için spriteların dizi listesinde saklandığı bir 2D oyun üzerinde çalışıyorum. Oyuncunun birden fazla durumu olduğundan, kullanımda önceki durumları kaldırmak istiyorum. (5 diyelim: 0,1,2,3,4,5 inci görüntüleri) someImageView.setImage(x.getImage(y));ArrayList'ten kaldırılan görseller hala gösteriliyor

Ve önce kaldırın:

List<Image> x = new ArrayList(); 

Şimdi bu listeden görüntüleri kullanın: ben bir ArrayList var devletler olarak:

for(int i = 0; i < 6; i++) 
    x.remove(y); 

Ama Bu görüntüler bir sonraki görüntü kümesinin yerine hala gösteriliyor.

Bir çeşit önbellekleme olabilir mi? Öyleyse bu önbelleği nasıl silebilirim böylece yeni resimlerim uygulanıyor?

Benim peri görüntüleri beyanı (bir görüntü için gösterilen, ancak tüm görüntüler için onun benzeri) aşağıdaki gibidir:

Image someImg = new Image("path", true, false, true); 
+0

Eğer someImageView.setImage arayıp sonra görüntüleri dinlenme mü onları listeden kaldırdınız mı? – MadProgrammer

cevap

2

ben doğru anlamak mı bilmiyorum.

Yani, örn. ImageView'da ayarlanacak bir listenin ilk öğesi (doğru ayarlanmış), daha sonra bu öğeyi listeden kaldırırsınız.

Bu noktada, resmin ImageView'dan da kaldırılmasını bekler misiniz?

Neden kaldırılmalı?

Liste, nesneler (işaretçiler) için başvurular içerir. Listeden bir görüntü ayarladığınızda, referans ImageView'e aktarılır, bu yüzden şimdi o nesneyi işaret edecektir. Referansı listeden kaldırırsanız, önemli değildir, ImageView hala bu referansa işaret edecektir.

Yani (böyle bir şey) Eğer elemanları kaldırıldı sonra açıkça setImage arama veya ObservableList kullanabilir ve kaldır görüntüyü ayarlayabilirsiniz:

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)); 
     } 
    }); 
} 
İlgili konular