سؤال

وركضت إلى problem.I'm به برنامج GIS باستخدام المرن.

وهناك خريطة في بلدي التطبيق، عند النقر فوق رمز واحد على الخريطة، windowA للملوثات العضوية الثابتة، عندما كنت فوق ارتباط داخل windowA، windowB للملوثات العضوية الثابتة، ولكن هنا مشكلتي الخروج، عند إغلاق windowB واضغط على الرابط داخل windowA وقت آخر، اثنان windowB يطفو على السطح ...

في بلدي windowA، لدي

...
var windowBEvt:WindowBEvent = new WindowBEvent();
CairngormEventDispatcher.getInstance().dispatchEvent(windowBEvt);
...
<control:WindowBControl id='control1'>

في WindowBControl، لدي

addCommand(WindowBControl.EVENT_POPUPWindowB,WindowBCommand);

في WindowBCommand، لدي

public function execute(event:CairngormEvent):void
{
    ...
    var windowB:WindowB = new WindowB();
    PopUpManager.addPopUp(windowB);
    ...
}

ويمكن لأي شخص أن تعطيني اليد؟

والكثير شكرا!

وأفضل، شو

هل كانت مفيدة؟

المحلول

هل WindowBControl ترث من FrontController؟ إذا كان الأمر كذلك، ربما كنت instantiating أكثر من مرة على الحادث. هذا:

<control:WindowBControl id='control1'>

ويجري إنشاء مثيل من وحدة التحكم هذه الجبهة. منذ كنت قد وضعت هذا سطر من التعليمات البرمجية في WindowA، وأنت تسير لإنشاء مثيل جديد من وحدة التحكم هذه في كل مرة تقوم بإنشاء مثيل جديد من WindowA. هذا وسوف يؤدي ذلك في الأوامر يطلق عليها مرة واحدة لكل مثيل وحدة تحكم في كل مرة وقع الحدث الخاص بك.

ويجب عليك فقط التحكم الجبهة مثيل حيث كنت الإيجابية التي سيتم فقط مثيل وقت واحد. وMXML التطبيق الرئيسي هو مكان جيد لذلك.

نصائح أخرى

أولا

// Shouldn't this be in a FrontController class?
addCommand(WindowBControl.EVENT_POPUPWindowB,WindowBCommand);

وأعتقد أن لديك للاتصال بطريقة أو بأخرى PopupManager.removePopup لدول إشارة فليكس 3 أكشن:

<اقتباس فقرة>   

والملوثات العضوية الثابتة نافذة على مستوى أعلى. ومن الممارسات الجيدة لremovePopUp المكالمة () لإزالة بالنوافذ التي تم إنشاؤها باستخدام طريقة () وaddPopUp. إذا كانت تنفذ الطبقة IFocusManagerContainer، فإن نافذة لديها FocusManager الخاصة به بحيث، إذا كان المستخدم يستخدم المفتاح TAB للتنقل بين عناصر التحكم، إلا أن التحكم في النافذة سيتم الوصول إليها

وأجد حلا آخر.

وطريقة إغلاق في windowA، وأنا أكتب

private function onClose():void
{
     PopUpManager.removePopUp(this);
     if(CairngormEventDispatcher.getInstance().hasEventListener(WindowBControl.EVENT_POPUPWindowB))
     {
         control1.removeCommand(WindowBControl.EVENT_POPUPWindowB);
     }

}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top