2016-03-14 2 views
0

У меня в моем приложении два ползунка: один - это mx: HSlider и другой Spark s: Hslider. Существует небольшой сценарий для назначения текста для значения слайдера. Ниже МХ: HSlider, представляющий текст:Текст не отображается, если Spark s: используется HSlieder (mx: HSlider против 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> 

Это покажет текст «Low» сразу после загрузки страницы.

В следующей редакции используется Spark s: HSlider для представления текста, закодированного в скрипте. Эта версия с искровым компонента не отображается текст «Low» сразу после загрузки страницы:

<?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

Исключительный слайдер не запускает событие изменения, когда значение задано программно. Таким образом, вы должны были бы задать текст, как только ваш вид готов (обратите внимание на OnComplete() в приложении MXML):

<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 очень много. Этот ответ был совершенным и действовал так хорошо. Я ценю ваш быстрый и точный ответ. –

Смежные вопросы