2010-08-26 98 views
1

我在Flex中遇到了旋轉按鈕的問題。他們似乎污染了其他組件的焦點矩形。
看看下面的源代碼,不能簡單得多: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> 

現在執行它。點擊文本區域,焦點矩形是正確的。按兩次選項卡,旋轉TextArea的焦點矩形!

有沒有解決這個問題,還是應該避免旋轉按鈕?

我正在使用Flex SDK 3.5。

感謝,

丹尼爾

回答

1

好像在的Flex SDK中的錯誤。我看下選項:

  • 禁用聚焦框與focusSkin =「{空}」
  • 實現自己的皮膚和處理旋轉正確
  • 轉會星火,因爲3.5是(目前) 最後SDK第三代
  • 嘗試自行修復它(我覺得這將是 棘手...)

此外,您可以在文件Adobe的跟蹤器中的錯誤,但他們深入到4個生成Flex。

更新:3.6 nightly build也包含這個bug。

2

我最近也偶然發現了這個錯誤。這是link to suggested fix

但是,我想知道是否有更通用的解決方案,而不是擴展每個組件並重寫adjustFocusRect。

我想出了延長FocusManger並覆蓋了focusPane吸氣如下:

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); 
} 

這似乎是工作,但將是很好如果一些專家能夠判斷我是否沒有任何陷阱我不知道。