2013-09-30 35 views
0

我正在開發一個UI項目,它要求自動調整大小按鈕(基於標籤長度)具有用於鍵盤或控制器焦點的焦點指示圖形。這個圖形顯然必須按照您的想象與家長進行縮放。scale9grid在子動畫片上運行

這會導致問題;父剪輯9剪切,並且該剪切不落入該剪輯的子Sprites/MovieClip。重點指標必須是無障礙財產,因爲它必須能夠打開或關閉。

目前唯一能夠成像的解決方案是scale9Grid的一個非常程式化的重新實現,其中我將焦點指示符分爲9,並在父寬度/高度/ scaleX/scaleY被更改時改變9個部分的屬性。這也意味着當該按鈕集中時打開和關閉所有9個部件

有沒有比這更好的方法?

回答

1

我建議你創建一些包裝類AppButton(或者可能是你已經有一個,因爲你必須通過標籤功能的一些調整大小)用方法setSkin(skin:MovieClip)(其中皮膚是MovieClip從庫)和widthheight覆蓋的制定者,所以你可以在這裏實現調用方法arrange()中的皮膚調整大小邏輯,每次調用寬度或高度都會改變。兒童與其他影片剪輯(集中在你的情況下邊框),所以不要使用scale9Grid屬性的孔皮膚,但集大小直接與集兒童scale9Grid屬性他們以及, -

皮膚可能會很複雜所以你arrange方法是這樣的:

private function arrange():void 
{ 
    var child:DisplayObject; 
    for(var i:int = 0; i < numChildren; i++) 
    { 
     child = getChildAt(i); 
     child.width = width; 
     child.height = height; 
    } 
} 

這也是值得做的項目按鈕的外觀一個皮膚格式,所以你可以使用一個包裝的所有按鈕。

稍後,您可以添加更多功能到這個AppButton - 切換鼠標事件的視圖狀態,設置文本標籤,動畫皮膚等。

這種方法對我來說多年工作,我們有基地ToggleButtonLabelButton extends ToggleButton類,並通過自定義皮膚分析和排列擴展它們在每個項目。

+0

這實際上聽起來像是一種非常聰明的方式來處理按鈕和組件。我一定會在未來實施這個。目前我被卡住了一個糟糕的API,但我正在努力改寫它。 – Glitcher