2016-03-14 11 views
0

我在應用程序中有兩個滑塊:一個是mx:HSlider,另一個是Spark s:Hslider。有一個小腳本爲滑塊值分配文本。 以下是MX:使用HSlider表示文本:使用Spark s:HSlieder時不顯示文本(mx:HSlider vs s:HSlider)

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.SliderEvent; 
      private var txtvalue:int = 0; 
      protected function Focal_changeHandler(event:SliderEvent):void 
      { 
       txtvalue = Focal.value; 
       if(txtvalue == 0) 
        Slider_txt.text = "Low"; 
       if(txtvalue == 1) 
        Slider_txt.text = "Middle"; 
       if(txtvalue == 2) 
        Slider_txt.text = "High"; 

      } 
     ]]> 
    </fx:Script> 


    <mx:HSlider id="Focal" x="402" y="285" maximum="2" minimum="0" value="0.01" buttonMode="true" enabled="true" snapInterval="1" tickInterval="1" allowTrackClick="true" liveDragging="true" change="Focal_changeHandler(event)"/> 
    <s:HSlider id="Temp" x="402" y="355" width="160" minimum="0" maximum="2" stepSize="1" value="0" liveDragging="true"/> 
    <s:Label id="Slider_txt" x="405" y="248" text= "(Slider_txt.txt)" fontSize="17"/> 
</s:Application> 

這將顯示文本「低」頁面加載後的權利。

以下翻譯使用Spark s:HSlider來表示在腳本中編碼的文本。這個版本與Spark組件不顯示文本「低」頁面加載後右:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.SliderEvent; 
      private var txtvalue:int = 0; 
      protected function Focal_changeHandler(event:Event):void 
      { 
       txtvalue = Focal.value; 
       if(txtvalue == 0) 
        Slider_txt.text = "Low"; 
       if(txtvalue == 1) 
        Slider_txt.text = "Middle"; 
       if(txtvalue == 2) 
        Slider_txt.text = "High"; 

      } 
     ]]> 
    </fx:Script> 



    <s:HSlider id="Focal" x="402" y="355" width="160" minimum="0" maximum="2" buttonMode="true" enabled="true" stepSize="1" value="0.01" liveDragging="true" change="Focal_changeHandler(event)"/> 
    <s:Label id="Slider_txt" x="398" y="250" text= "(Slider_txt.txt)" fontSize="17"/> 
</s:Application> 

任何幫助將是非常讚賞。 謝謝。

回答

0

當以編程方式設置值時,Spark Slider不會觸發更改事件。所以,你需要設置文本一旦你的看法是準備好(注意在應用程序MXML中的onComplete()):

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       minWidth="955" 
       minHeight="600" 
       creationComplete="onComplete()"> 

private function onComplete():void 
{ 
    updateSliderText(); 
} 

private function updateSliderText():void 
{ 
    txtvalue = Focal.value; 
    if (txtvalue == 0) 
     Slider_txt.text = "Low"; 
    if (txtvalue == 1) 
     Slider_txt.text = "Middle"; 
    if (txtvalue == 2) 
     Slider_txt.text = "High"; 
} 
+0

Hi.Thank你Phiilarmon非常多。這個答案非常完美,功能非常好。感謝您的及時準確回覆。 –