2016-03-31 17 views
2

Şu anda bir clickListener uygulamasına çalışıyorum. Çalışma zamanı olan Overlap2D adlı harika bir araç buldum, orada güzel düğmeler yaptım ve yükledim, hepsi iyi çalışıyor. ,Libgdx Dinleyicisi birden çok kez yangın girip çıkıyor

 @Override 
     public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor){ 

       playButton.setLayerVisibility("MouseOver", true); 
       playButton.setLayerVisibility("pressed", false); 
       playButton.setLayerVisibility("normal", false);  

       System.out.println("Actor enter : "+fromActor); 

     } 

     @Override 
     public void exit(InputEvent event, float x, float y, int pointer, Actor toActor){ 


       playButton.setLayerVisibility("MouseOver", false); 
       playButton.setLayerVisibility("pressed", false); 
       playButton.setLayerVisibility("normal", true); 

       System.out.println("Actor exit : "+toActor); 

     } 
     @Override 
     public boolean touchDown (InputEvent event, float x, float y, int pointer, int button){ 

       System.out.println("touchdown"); 

       return true; 
     } 
     @Override 
     public void touchUp (InputEvent event, float x, float y, int pointer, int button){ 

       System.out.println("touchup"); 

     } 

Ve burada sorun, konma ve Rötuş bir kez denir: benim düğmeleri için "vurgulu" etki yapmak istemişlerdir Çünkü yöntemler girmek ile i clickListener kullanılan ve çıkış, o kadar görünüyor düğmeye veya yukarı dokunduğumda. Ama girmek ve çıkmak yöntemleri de touchdown ve böylece görünüyor touchupo olay Oo sırasında denir:

touchdown 
Actor enter : null 
Actor exit : Image 
Actor enter : Image 
touchup 
Actor exit : Image 
Actor exit : Image 
Actor enter : Image 
Actor exit : Image 
Actor enter : Image 

ben ^^ ayıklama için de fromActor ve toActor baskılı Ve hala çıkış ateşler nedenini bilmiyorum ve olayı çok fazla girin ... Herhangi biri hakkında bir fikriniz var mı?

Teşekkür :)

cevap

2

Sen enter ve exit yöntemlerine geçirilen pointer kontrol etmeniz gerekir. pointer, -1 ise, fare imleci az önce aktörün sınırları üzerinden gezinmeye başladı veya durduruldu. Bu pointer-1 değil, daha sonra aktör sadece bir tıklama aşağı veya tıklama serbest bırakıldı (sırasıyla enter ve exit için).

İmleci düğmenin üzerine getirip tıklatıp uzaklaştırırsanız, iki enter olayı ve iki exit olayı alırsınız.

  • Hover -> aşağı tıklayın pointer -1
  • ile girilen -> işaretçi 0
  • Yayın tıklama ile girilen -> 0
  • Imleçi uzak işaretçi ile çıkıldı -> işaretçisi ile çıkıldı -1

Ayrıca, ClickListener kullanırken, yöntemleri geçersiz kılarken süper yöntemlere başvurduğunuzdan emin olun, bu nedenle düzgün davranacaktır!

İlgili konular