2012-01-20 26 views
8

Son zamanlarda java'da 2d'lik bir oyun üzerinde çalışıyorum ve şu anda olay işleme sistemini doğru şekilde kullanmaya çalışıyorum. Bir animasyonu başlatmak için fare tıklatmaya çalışıyordum ve tıklatırken fareyi hareket ettirmeye çalışana kadar çalıştı. Bu noktada hiçbir şey olmuyor. Hem mouselistener hem de mousemotionlistener sınıfları kullanıyorum ve sorun hala devam ediyor.Fare hareket halindeyken Java fare olayları göz ardı ediliyor mu?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

O bir kez görüntüler setini oynamak ve durdurmak için animatör sınıfını çağırır: İşte Main kod. Animatörler, fare olaylarını dahil etmeden önce mükemmel çalışıyordu. O fare hareketi sırasında gerçekleştirilecek belirli bir eylem yoksa, neden fare hareketi sırasında işe yaramayacağını anlayamıyorum. Fare basılı ve hiç fareyi hareket olmadan bırakılmış ise (bariz çözüm yoktur, özür dilerim, ben çok uzun zaman önce java başladı.) Java'da

cevap

6

, bir fare tıklaması sadece kaydeder. Bu çoğu kullanıcının başarması için zordur, dolayısıyla çoğu UI elemanı (düğmeler gibi) fare basıncına tepki gösterir ve olayları serbest bırakır ve "tıklamayı" göz ardı eder.

Yine de, bir düğme için daha iyi bir seçenek ActionListener eklemektir. Ardından düğmenin kendisi fare olaylarını dinleyecek ve ne zaman tıklandığına karar verecektir.

+0

Teşekkürler! Tıklama ile ilgili ipucu bana daha sonra biraz hayal kırıklığı kurtaracak. – Ryan

+2

@trashgod: Aslında, 'ButtonModel' sadece durumu izler - fare olaylarını dinleyen ve modeli güncelleyen 'ButtonUI'. –

İlgili konular