0

開始年と終了年の 2 つのラベルを持つ HSlider があります。終了年は年が終了するたびに増加します。スライダーのラベルに最新の終了年を表示したいと思います。

私はslider.labels [1]を変更しようとしましたが、デバッグで見ると値が変更されますが、画面では変更されません。バインド可能な変数を試してみましたが、再びラベル[1]がデバッグで変更されるのを確認できますが、値は画面に表示されません。

hsStart.labels[0] = acResult[0].RATE_MIN;
hsStart.labels[1] = acResult[0].UP_RANGE;

また

_aryLabels[0] = acResult[0].RATE_MIN;
_aryLabels[1] = acResult[0].UP_RANGE;
hsStart.invalidateDisplayList();

<mx:HSlider minimum="1981" maximum="2000" snapInterval="1" id="hsStart" tickInterval="4" liveDragging="true" labels="{_aryLabels}" 
    width="527" thumbCount="2" change="updateYear(event);" dataTipFormatFunction="formatSlider" allowThumbOverlap="true" horizontalCenter="190" top="118"
    sliderThumbClass="Classes.Input.BigThumbClass"  fillColors="[0xff0000, 0x00ff00, 0xff0000, 0x00ff00]"/>

これはとても簡単に思えますが、誰かアイデアがありますか?

ポール

4

1 に答える 1

1

この方法でそれを行うことができます:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
            layout="absolute" minWidth="955" minHeight="600" creationComplete="init()">
<mx:Script>
    <![CDATA[
        [Bindable]private var lastYear:int = 2008;

        private function init():void
        {
            updateLabels();
        }

        protected function onIncYear(event:MouseEvent):void
        {
            lastYear++;
            hsStart.maximum = lastYear;
            updateLabels();
        }

        private function updateLabels():void
        {
            hsStart.labels = [hsStart.minimum, hsStart.maximum];
        }
    ]]>
</mx:Script>

<mx:HSlider 
    id="hsStart"
    minimum="1981" 
    maximum="{lastYear}" 
    snapInterval="1"  
    tickInterval="4" 
    liveDragging="true" 
    width="527" 
    thumbCount="2" 
    allowThumbOverlap="true" 
    horizontalCenter="190" 
    top="118"
    fillColors="[0xff0000, 0x00ff00, 0xff0000, 0x00ff00]"/>

<mx:Button x="698" y="36" label="Increment Year" click="onIncYear(event)"/>

</mx:Application>
于 2013-02-15T21:36:54.783 に答える