2012-04-18 70 views
0

我在Adobe Flash CS5.5的圖形編輯器中創建了一個名爲customSliderTrack的皮膚。此Slider現在位於FLA文件的「庫」中。如何使用actionscript中的自定義高度爲fl.controls.Slider創建皮膚?

我可以把這個皮膚與下面的代碼:

var cls:Class = getDefinitionByName("CustomSliderTrack") as Class; 
var tmpTrack:Sprite = new cls(); 
slider.setStyle("sliderTrackSkin",tmpTrack); 

然而,由於的Adobe Flash Player不同版本的兼容性的FLA文件,並缺少的二元特性我需要實現這一切的Actionscript。

我明白cls是一個MovieClip對象,但我不能用new MovieClip()得到相同的結果。我認爲這可能與圖形編輯器中的虛線相關(我修改了默認的SliderTrack_skin)。我還沒有發現他們的意思,以及如何用Actionscript代碼替換它們。

回答

0

setStyle自動設置track.heighttrack.width。如果track.heightslider.height屬性似乎沒有任何影響。要解決此問題,只需將track.height設置爲最佳值。

要訪問track延長Slider類和覆蓋configUI功能:

public class CustomSlider extends Slider 
{ 
    override protected function configUI():void 
    { 
     // Call configUI of Slider 
     super.configUI(); 
     // The sprite that will contain the track 
     var t:Sprite = new Sprite(); 
     // Draw the content into the sprite 
     t.graphics.beginFill(0x000000, 0.1); 
     t.graphics.drawRect(0, -15, width, 30); 
     t.graphics.endFill(); 
     // Set the Sprite to be the one used by the Slider 
     this.setStyle("sliderTrackSkin",t); 
     // Reset the height to the value that it should be 
     track.height = 30; 
    } 
} 
0

根據您的軌道資產的複雜性,您可以用繪圖API實現這一點:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html

一個非常簡單的例子是:

var track:Sprite = new Sprite(); 
track.graphics.lineStyle(2, 0xcccccc); 
track.graphics.beginFill(0x000000, 1); 
track.graphics.drawRect(0, 0, 400, 20); 
track.graphics.endFill(); 
track.scale9Grid = new Rectangle(2, 2, 396, 16); 
slider.setStyle("sliderTrackSkin",track); 

這將創建一個軌道,這只是一個黑色的矩形,尺寸爲400x20像素。您可以在代碼中設置scale9grid以控制皮膚如何縮放。在上面的例子中,矩形的邊框不會縮放,但裏面的黑色矩形將會縮放。試驗繪圖API中的方法可能是您所需要的。

如果您需要更復雜的資產,我建議加載一個圖像,然後將其傳遞給slider.setStyle。

+0

事情是yes和no!第2-5行必須以「track.graphics」開始,然後我得到100%的黑色Slidertrack,但是尺寸會自動縮放,因此新軌道的尺寸與默認尺寸完全相同。正如我之前在圖形編輯器中提到的那樣,有一些虛線標出了滑行時滑動的區域,但我沒有找到正確的動作命令來做這樣的事情! – enaut 2012-04-19 12:49:13

+0

我已經更新了代碼,以包含如何設置「scale 9」區域的示例,即您在Flash IDE中看到的那些虛線。還要感謝您捕獲缺少的圖形調用,我也添加了這些。 – plemarquand 2012-04-19 16:18:22

+0

謝謝,那就是我一直在尋找的! – enaut 2012-04-20 08:24:39