2009-07-01 66 views
3

我打算使用HSlider來設置一系列值。我想左手拇指看起來像和右手大拇指樂像,使他們看起來像包括(範圍)的範圍代替|範圍|。我只知道如何爲SliderThumb設置皮膚,它將爲兩者設置皮膚。有誰知道一種方法來爲每個拇指設置不同的皮膚?Flex:HSlider - 爲不同的拇指設置不同的皮膚?

謝謝。

UPDATE

我現在有這樣的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<mx:HSlider xmlns:mx="http://www.adobe.com/2006/mxml"> 

    <mx:Style> 
    .thumbTickLeft 
    { 
     disabledSkin: Embed(source="skins.swf", symbol="thumbTickLeft_disabledSkin"); 
     downSkin: Embed(source="skins.swf", symbol="thumbTickLeft_downSkin"); 
     overSkin: Embed(source="skins.swf", symbol="thumbTickLeft_overSkin"); 
     upSkin: Embed(source="skins.swf", symbol="thumbTickLeft_upSkin"); 
    } 
    .thumbTickRight 
    { 
     disabledSkin: Embed(source="skins.swf", symbol="thumbTickRight_disabledSkin"); 
     downSkin: Embed(source="skins.swf", symbol="thumbTickRight_downSkin"); 
     overSkin: Embed(source="skins.swf", symbol="thumbTickRight_overSkin"); 
     upSkin: Embed(source="skins.swf", symbol="thumbTickRight_upSkin"); 
    } 
    </mx:Style> 

    <mx:Script> 
     <![CDATA[ 
      override protected function commitProperties():void 
      { 
       super.commitProperties(); 

       updateThumbSkins(); 
      } 

      private function updateThumbSkins():void 
      { 
       this.getThumbAt(0).setStyle('styleName','thumbTickLeft'); 
       this.getThumbAt(1).setStyle('styleName','thumbTickRight'); 
      } 
     ]]> 
    </mx:Script> 


</mx:HSlider> 

拇指蜱只是不顯示呢?順便說一句我已經確定了皮膚被正確加載,因爲我可以將它們設置爲這樣的按鈕:

<mx:Button styleName="thumbTickRight"/> 

回答

2

嗯,我能得到它的工作這way..not知道這是最好的方法還是不行。

<?xml version="1.0" encoding="utf-8"?> 
<mx:HSlider 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    sliderThumbClass="RangeSliderThumb" 
    creationComplete="initThumbs()"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.sliderClasses.SliderThumb; 

      [Embed(source="skins.swf", symbol="thumbTickLeft_upSkin")] 
      private var leftUp:Class; 

      [Embed(source="skins.swf", symbol="thumbTickRight_upSkin")] 
      private var rightUp:Class; 

      [Embed(source="skins.swf", symbol="thumbTickLeft_downSkin")] 
      private var leftDown:Class; 

      [Embed(source="skins.swf", symbol="thumbTickRight_downSkin")] 
      private var rightDown:Class; 

      [Embed(source="skins.swf", symbol="thumbTickLeft_overSkin")] 
      private var leftOver:Class; 

      [Embed(source="skins.swf", symbol="thumbTickRight_overSkin")] 
      private var rightOver:Class; 

      [Embed(source="skins.swf", symbol="thumbTickLeft_disabledSkin")] 
      private var leftDisabled:Class; 

      [Embed(source="skins.swf", symbol="thumbTickRight_disabledSkin")] 
      private var rightDisabled:Class; 

      private function initThumbs():void 
      { 
       this.thumbCount = 2; 

       var thumb1:SliderThumb = this.getThumbAt(0); 
       thumb1.setStyle("thumbUpSkin", leftUp); 
       thumb1.setStyle("thumbDownSkin", leftDown); 
       thumb1.setStyle("thumbOverSkin", leftOver); 
       thumb1.setStyle("thumbDisabledSkin", leftDisabled); 

       var thumb2:SliderThumb = this.getThumbAt(1); 
       thumb2.setStyle("thumbUpSkin", rightUp); 
       thumb2.setStyle("thumbDownSkin", rightDown); 
       thumb2.setStyle("thumbOverSkin", rightOver); 
       thumb2.setStyle("thumbDisabledSkin", rightDisabled); 
      } 
     ]]> 
    </mx:Script> 

</mx:HSlider> 
0

我想你可以通過繼承Slider類(或使用HSlider)做到這一點,並添加一種將皮膚分別應用於每個拇指的方法。

在Slider.as有一個叫做createThumbs方法。如果你看它,你會看到創建拇指時,其外觀被分配給它,不管以何種設置爲thumbUpSkin

thumb = SliderThumb(new _thumbClass()); 

thumb.owner = this; 
thumb.styleName = new StyleProxy(this, thumbStyleFilters); 
thumb.thumbIndex = i; 
thumb.visible = true; 
thumb.enabled = enabled; 

thumb.upSkinName = "thumbUpSkin"; 
thumb.downSkinName = "thumbDownSkin"; 
thumb.disabledSkinName = "thumbDisabledSkin"; 
thumb.overSkinName = "thumbOverSkin"; 
thumb.skinName = "thumbSkin"; 

所以,你可以創建一個方法調用,skinThumbs和是否覆蓋在createThumbs中應用的皮膚設置。您可以致電getThumbAt(int)獲取每個拇指。如果您需要一個覆蓋皮膚設置的手,請發表評論。

我會覆蓋commitProperties方法並從那裏撥打電話skinThumbs - 只需確保在呼叫super.commitProperties之後撥打電話skinThumbs即可。順便說一下,createThumbs方法只從commitProperties調用,從一個位置commitProperties只調用,所以你不必擔心處理您的修改正由另一內部調用createThumbs更換。

+0

我要去嘗試了這一點,聲音紮實,如果我有問題,我會添加其他評論否則我就標誌着這個正確的。謝謝。 – 2009-07-01 16:34:45

+0

我嘗試了這一點,並遇到一些問題,我用代碼更新了我的問題。 – 2009-07-01 18:39:09

1

你可能不會再閱讀,但對於其他人誰是有,因爲我試圖操縱多個拇指各有不同的皮膚儘可能多痛苦的好處,我想我會指出你在哪裏您的原始代碼錯誤。我遵循你的原始代碼示例,也無法得到大拇指渲染,然後它明白了爲什麼你的最終解決方案工作。

問題是,在原來的代碼中,你使用的是風格屬性upSkin,downSkin等,而在你使用thumbUpSkin,thumbDownSkin等工作的代碼中微妙的變化,但它使所有的區別!

希望這可以幫助某個人節省一天的生命跟蹤...;-)

乾杯 德魯

相關問題