2009-02-26 11 views
0

Birkaç bileşen ve dinleyiciye sahip bir TitleWindow mxml sınıfına sahibim. Oluşturma işlemi tamamlandığında ve init durumunda, olayları gui'de dinleyen bazı dinleyiciler ekliyorum.Gerçekte bileşeni göstermeden Flex ve sahte Mxml başlatma, (daha fazla bilgi)

aşağıdaki kodla bir tekil TitleWindow bir "düğme" kullanıcı tıklama i yaptığında bu TitleWindow yalnızca gösterilmiştir:

public static function getInstance():MyWindow 
{ 
    if (MyWindow.singleton) 
    { 
     return MyWindow.singleton; 
    } 
    else{ 
     MyWindow.singleton = new MyWindow(); 
     return MyWindow.singleton; 
    }    
} 

ben a tek gerekli kullanıcı bu pencereyi olarak defalarca arayacak çünkü İstediği kadar çok ihtiyacım var.

Sorun, bazı özel dış olaylarda, bir kez bile gösterilmeden önce bazı dinleyicileri "değiştirmeyi" (dinleyicileri kaldır ve yeni olanları ekle) MyWindow'dan bir düğmede kullanmam gerektiğidir.

Uygulamam başladığında hala MyWindow.getInstance() belleğim var. Ancak, dinleyicilerin eklenmesi/kaldırılması, uygulamaların başlatılmasında aşağıdaki kodu kullanırken olayın gerçekleşmemesi durumunda herhangi bir etkiye sahip görünmüyor.

myWindow= MyWindow.getInstance(); 
    myWindow.initialize(); 

Sürpriz sayılmayacak eğer ben "gösteri" MyWindow en az bir kez, sonra MyWindow örneğinde olaylar modifikasyonlar mükemmel çalışıyor ('hale').

Bu bileşenin başlangıcında gösterilmeden bu bileşenin başlamasını tam olarak nasıl taklit edebilirim?

Teşekkürler!

cevap

2

Düğmeniz hangi kapsayıcıda bulunur? Multiple View Container kullanıyorsanız, creationPolicy değerini all olarak ayarlamayı deneyebilirsiniz. Single View Containers Tüm çocuklarını tek seferde yarat ve bu problemle yüzleşmemelisin.

Flex 3.0 dokümanlar itibaren ben bu geri alabilirsem:

varsayılan oluşturma politikasını bütün konteynerler için, Başvuru konteyner hariç, üst kapsayıcı politikasıdır. Uygulama kapsayıcısının varsayılan ilkesi otomatiktir.

Bu, tüm sorunlarınızın nedeni gibi görünüyor.

Güncelleme: Bunu beklenen düşündüm beri Ben, bu daha önce söz etmedi :) all daha yavaş uygulama yükünü yapar creationPolicy için ayarlama. Yani, Ordered Creation'u okuyun - bu teknik, kontrollerin tek bir seferde (tüm kontroller oluşturulduktan sonra varsayılan davranış) veya adım adım olarak görüntülenip görüntülenmeyeceğini seçmenize yardımcı olur. yaratıldı.

+0

Haklısınız, şimdi sorun şu ki, başlangıçta özel pencerenin başlatılması 2 saniye sürüyor ve sistemi asıyor, acaba işlenişin ne zaman yapıldığını bilmek için bir olay olup olmadığını merak ediyorum: – coulix

+0

zaten bunu biliyorum :) – dirkgently

İlgili konular