我在Flex中旋转按钮时出现问题。它们似乎污染了其他组件的焦点矩形。
采用以下源代码,这可能不是更简单:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:VBox width="100%" height="100%">
<mx:Spacer height="100" />
<mx:Button rotation="10" />
<mx:TextArea rotation="0" />
</mx:VBox>
</mx:WindowedApplication>
现在执行它。单击文本区域,焦点矩形正确。按Tab键两次,旋转TextArea的焦点矩形旋转!
是否有解决方法,或者我应该完全避免旋转按钮?
我正在使用Flex SDK 3.5。
谢谢,
丹尼尔
答案 0 :(得分:2)
我最近偶然发现了这个错误。这是一个link to suggested fix。
但是,我想知道是否有更通用的解决方案,而不是扩展每个组件并覆盖adjustFocusRect。
我提出了扩展FocusManger并覆盖focusPane的getter,如下所示:
override public function get focusPane():Sprite
{
var fp:Sprite = super.focusPane;
if (fp && fp.numChildren != 0)
fp.getChildAt(0).rotation = 0;
return super.focusPane;
}
并将其设置为应用程序的焦点管理器:
private function onPreinitialize():void
{
application.focusManager = new FocusManagerEx(this);
}
这似乎有效,但如果有专家能够判断出是否有任何我不知道的陷阱会很好。
答案 1 :(得分:1)
似乎是Flex SDK中的一个错误。我看到下一个选项:
此外,您可能会在Adobe的跟踪器中提交一个错误,但它们已经深入到第4代Flex中。
更新:3.6每晚构建也包含此错误。