كيفية إزالة تأثيرات التحويم / التمديد على مستوى العالم على مكونات الشرارة؟

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

سؤال

هدفي هو إزالة جميع ملاحظات Hover من واجهة المستخدم. الدافع هو اختبار النماذج الأولية لواجهة اللمس وعدم الرغبة في الحصول على قائمة انتظار التفاعل عندما يحوم الماوس الذي لن يكون لديهم مع واجهة اللمس.

لدي حل جزئي ولكن لديه مشكلتان:

  1. يتطلب معالج الحدث على كل مكون.
  2. وميض على التحويم.

        protected function ui_suppressHover(event:MouseEvent):void
        {
            var b = event.currentTarget as UIComponent;
            b.skin.currentState = "up";
        }
    

    u003Cs:Button x="118" y="60" label="Change em" click="button1_clickHandler(event)" rollOver="button1_rollOverHandler(event)" mouseOver="ui_suppressHover(event)"/>

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

المحلول 2

إليك حل جزئي مدفوع بإجابة Maxim. يمكنك جعل فئة HoverlessButton من خلال تمديد زر والتجاوز على النحو التالي:

override protected function getCurrentSkinState():String
{               
    var state:String = super.getCurrentSkinState();
    if (state == "over")
        state = "up";
    return state;
}

يجب عليك الاتصال بـ Super Super First لأنها الوحيدة التي يمكنها التحقق بشكل صحيح من أجل ISDown () ، وهو خاص.

نصائح أخرى

من الأفضل تجاوز getCurrentSkinState, ، على سبيل المثال انظر سبارك Button.as:

override protected function getCurrentSkinState():String
{
    if (!enabled)
        return "disabled";

    if (isDown())
        return "down";

    if (hovered || mouseCaptured)
        return "over";

    return "up";
}

لذلك فقط إزالة hovered || mouseCaptured "لو".

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