كيف يمكنني تحريك حدث itemEditEnd في قائمة فليكس عندما يتم تحديد خانة الاختيار / دون رادع؟

StackOverflow https://stackoverflow.com/questions/1064716

سؤال

ولدي عنصر List الذي لديه انخفاض في itemEditor CheckBox أن يشغل أيضا منصب itemRenderer. فإنه يعرض كل عنصر كما CheckBox بسيطة مع التسمية.

ومع ذلك، فإن حدث itemEditEnd لا يحصل تسبب حتى أنا النقر على شيء خارج القائمة. أريد أن تسبب بمجرد تحديد خانة الاختيار أو دون رادع.

وكنت أفكر في إيفاد ListEvent.ITEM_EDIT_END في CLICK معالج حدث يدويا، ولكن بعد ذلك حدث itemEditEnd سوف تحصل أوفد مرتين. هناك يجب ان يكون طريقة أفضل للقيام بذلك.

وأي أفكار؟

وشكرا.

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

المحلول

وهنا هو الحل خطرت لي. لقد غيرت قائمة جهدي لاستخدام المكون باعتباره itemRenderer <م> فقط ، وليس بوصفه itemRenderer وitemEditor. ثم قال لي معالج MouseEvent.CLICK استدعاء دالة في قائمة من itemRenderer لتنفيذ الإجراءات اللازمة:

وقائمتي المكون:

package
{
    import mx.controls.List;
    import mx.core.ClassFactory;

    public class CustomCheckBoxList extends List
    {
        public function CustomCheckBoxList()
        {
            super();

            itemRenderer = new ClassFactory(CheckBoxRenderer);
        }

        public function dispatchSelectionEvent(item:Object, selected:Boolean):void
        {
            // Take action here...
        }
    }
}

وبلدي ItemRenderer:

package
{
    import flash.events.MouseEvent;

    import mx.controls.CheckBox;

    public class CheckBoxRenderer extends CheckBox
    {
        public function CheckBoxRenderer()
        {
            super();
        }

        override protected function clickHandler(event:MouseEvent):void
        {
            super.clickHandler(event);

            CustomCheckBoxList(listData.owner).dispatchSelectionEvent(data, selected);
        }
    }
}

نصائح أخرى

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

لاحظ أن الناس فليكس جاء الواضح مع فكرة أن المستخدمين يريد للتبديل على مربعات الاختيار لعدة مرات قبل أن يستقر على الدولة أن تلتزم ... وعند هذه النقطة انها تريد ضرب على مفتاح Enter. مدى وضوح!

وبلدي الحل هو لتجميع الحدث لوحة المفاتيح التي ما يعادل ضرب أدخل. الجزء الصعب هو أن واحدة يجب استخدام الأسلوب callLater () لارسال الحدث لعنصر تحكم القائمة لن سجلت المستمع لوحة المفاتيح على محرر حتى بعد يحصل يسمى مربع وانقر معالج. وهنا قال لي فوق معالج للمربع في بلدي العارض مخصص / محرر العنصر:

private function onClick(value:Object):void {
    newValue = value;
    var list:ListBase = ListBase(owner);
    list.callLater(dispatchEvent, [new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, Keyboard.ENTER, Keyboard.ENTER)]); 
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top