كيفية إزالة تأثيرات التحويم / التمديد على مستوى العالم على مكونات الشرارة؟
-
27-09-2019 - |
سؤال
هدفي هو إزالة جميع ملاحظات Hover من واجهة المستخدم. الدافع هو اختبار النماذج الأولية لواجهة اللمس وعدم الرغبة في الحصول على قائمة انتظار التفاعل عندما يحوم الماوس الذي لن يكون لديهم مع واجهة اللمس.
لدي حل جزئي ولكن لديه مشكلتان:
- يتطلب معالج الحدث على كل مكون.
وميض على التحويم.
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
"لو".