我的目标是从UI中删除所有悬停反馈。其动机是测试触摸界面原型,并且当鼠标悬停在触摸界面时不会让用户拥有交互队列。
我有部分解决方案,但它有两个问题:
悬停时闪烁。
protected function ui_suppressHover(event:MouseEvent):void
{
var b = event.currentTarget as UIComponent;
b.skin.currentState = "up";
}
< s:按钮x =“118”y =“60”label =“更改em”click =“button1_clickHandler(event)”rollOver =“button1_rollOverHandler(event)”mouseOver =“ui_suppressHover(event)”/&gt
答案 0 :(得分:2)
最好覆盖getCurrentSkinState
,例如见spark Button.as
:
override protected function getCurrentSkinState():String
{
if (!enabled)
return "disabled";
if (isDown())
return "down";
if (hovered || mouseCaptured)
return "over";
return "up";
}
所以只需删除hovered || mouseCaptured
“if”。
答案 1 :(得分:1)
这是Maxim的答案所激发的部分解决方案。你可以通过扩展Button和覆盖来创建一个HoverlessButton类:
override protected function getCurrentSkinState():String
{
var state:String = super.getCurrentSkinState();
if (state == "over")
state = "up";
return state;
}
你必须首先调用super impl,因为它是唯一可以正确检查isDown()的,它是私有的。