2013-03-04 18 views
12

Oyun ekranımın üzerinde bazı GUI gerektiren oyun üzerinde çalışıyorum. Android'de FrameLayout gibi bir şey.Libgdx ekran üzeri gui (duraklat düğmesi için)

Her şeyin olduğu GameScreen'im var. Şimdi istediğim, bir "duraklatma" düğmesi, yüksek puan bilgileri vb. Eklemek.

Düzenli hareketli çizim ile bir Stage nesnesini birleştirmeyi denedim. Ama girişleri işlemekle ilgili bazı problemlerim vardı: Kullanıcının ekranda duraklat düğmesini tıklattığında veya tıklatıldığı oyun alanında (bazı mermi eklemem gerekenler) nasıl yönetileceğini ...

Bunu bana açıklığa kavuşturabilir miyim?

cevap

23

UI'nizi yönetmek için Stage kullanabilmeniz gerekir. Girişin doğru şekilde çalışmasını sağlamak için InputMultiplexer eklemeniz gerekir, böylece Stage ve daha sonra geçerli giriş şemasının her ikisi de girişleri alacaktır.

böyle bir şey yapacağım, bunu kurmak için: sırası önemli olduğunu

Not (https://code.google.com/p/libgdx/wiki/InputEvent kodu temellidir Kod örneği)

InputMultiplexer multiplexer = new InputMultiplexer(); 
multiplexer.addProcessor(stage); 
multiplexer.addProcessor(gameScreenInputProcessor); 
Gdx.input.setInputProcessor(multiplexer); 

(Sana bir tahmin ediyorum UI'ye dokunulup dokunulmadığını görmek için sahnenin olayları almasını isteyin). Ayrıca, "handled" olayları mutliplexer tarafından yayılmayacağı için, giriş olay işleyicilerinden gelen boolean dönüş değeri bir çoklayıcı ile daha önemlidir. Stage içindeki UI olayları kendi "işlenmiş" bayrağına sahiptir (çoğunlukla doğru olanı yapar, ancak bazı ince farklar vardır). InputMultiplexer için

Bir alternatif küresel Stage takın mevcut oyun ekranını içeren bir "GameScreenActor" (Actor yeni bir alt sınıf) oluşturmak olacaktır. Yine de, giriş işleminizi scene2d yaklaşımına taşımanız gerekir. Muhtemelen bu sizin için doğru bir seçim değildir, ancak geçerli bir tanesidir.

+0

Tamam, ben de olsa ... InputMultiplexer belgelerini kontrol ettim ... cevabınız mantıklı. Bu yaklaşımı deneyeceğim .... umarım işe yarayacaktır. Çok teşekkürler! :) Android'de girdileri ele alışkanlığım var, umarım benzer çalışır :) – Veljko