Apache flex Flex:旋转按钮和改变焦点
我在Flex中的旋转按钮有问题。它们似乎污染了其他组件的焦点矩形Apache flex Flex:旋转按钮和改变焦点,apache-flex,actionscript-3,flex3,flexbuilder,Apache Flex,Actionscript 3,Flex3,Flexbuilder,我在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:Spa
以下面的源代码为例,非常简单:
<?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键两次,围绕文本区域的焦点矩形将旋转
有没有解决办法,或者我应该完全避免旋转按钮
我使用的是FlexSDK 3.5
谢谢
丹尼尔似乎是FlexSDK中的一个bug。我看到了下一个选项:
- 使用focusSkin=“{null}”禁用聚焦矩形
- 实现您自己的蒙皮并正确处理旋转
- 转到Spark,因为3.5是最新版本(当前) 第三代最后的SDK
- 试着自己修一下(我觉得会的) 狡猾的…)
更新:3.6夜间版本也包含此错误。我最近也偶然发现了此错误。这是一个例子 然而,我想知道是否有比扩展每个组件和覆盖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);
}
这似乎是可行的,不过如果有专家能告诉我是否有我不知道的陷阱,那就太好了