访问event.target.incrementButton上的currentCSSState属性

时间:2012-12-20 15:32:08

标签: flex

我目前正在创建一个像这样的微调器

                    var scoreSpinner:Spinner = new Spinner();
                scoreSpinner.width = 25;
                scoreSpinner.value = scoreList.getItemAt(index).Score;
                scoreSpinner.minimum = scoreList.getItemAt(index).Minimum;
                scoreSpinner.maximum = scoreList.getItemAt(index).Maximum;
                scoreSpinner.snapInterval = 1;//scoreList.getItemAt(index).Increment;

                if(scoreNameLabel.text == "Disconnect Impact")
                {
                    scoreSpinner.addEventListener(Event.CHANGE, spinnerChange);
                }

在一个特定的微调器上我想自定义递增(0,1,3,5,7)所以我想知道它们何时按下递增按钮以知道增加值的方法

            private function spinnerChange(event:Event):void
        {
             if(event.target.incrementButton.currentCSSState.valueOf() == "down")
            {
                if(event.currentTarget.value == 2)
                    event.currentTarget.value = 3;

                if(event.currentTarget.value == 4)
                    event.currentTarget.value = 5;

                if(event.currentTarget.value == 6)
                    event.currentTarget.value = 7;
            }

            if(event.target.incrementButton.currentCSSState.valueOf() == "up")
            {
                if(event.currentTarget.value == 2)
                    event.currentTarget.value = 1;

                if(event.currentTarget.value == 4)
                    event.currentTarget.value = 3;

                if(event.currentTarget.value == 6)
                    event.currentTarget.value = 5;
            } 

        }

运行时出现此错误

ReferenceError: Error #1069: Property currentCSSState not found on spark.components.Button and there is no default value.
at lcmp.web.wsc.ui.shared.controls.PreWSC.ProgramScore::ProgramScore/spinnerChange()[C:\TFS\Release Branches\CR13\Flex\Web\WSC\src\lcmp\web\wsc\ui\shared\controls\PreWSC\ProgramScore\ProgramScore.mxml:298]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at spark.components::Spinner/decrementButton_buttonDownHandler()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Spinner.as:455]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at spark.components.supportClasses::ButtonBase/commitProperties()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\supportClasses\ButtonBase.as:745]
at mx.core::UIComponent/validateProperties()

任何人都知道我如何使用这个属性,或者只是用旋转器

更好的方法

1 个答案:

答案 0 :(得分:0)

没有名为“currentCSSState”的此类属性。但是,Spinner控件具有stepSize属性,您可以使用该属性控制在单击按钮时微调器增加/减少的量。如果将stepSize设置为2,则这似乎与您要查找的内容相近。

如果您希望更好地控制微调器递增/递减值的方式,可以覆盖Spinner控件的方法incrementButton_buttonDownHandler()decrementButton_buttonDownHandler(),这些方法在您单击时执行的按钮。

以下是其中一种方法的默认实现:

protected function incrementButton_buttonDownHandler(event:Event):void
{
    var prevValue:Number = this.value;
    changeValueByStep(true);
    if (value != prevValue)
        dispatchEvent(new Event("change"));
}

您可以覆盖此项以根据自己的喜好递增this.value,而不是调用changeValueByStep()方法。你可能想看看那个changeValueByStep()方法,这样你就可以看到它正在做什么(它尊重最小值/最大值,如果你到达终点就让值包装到开头,等等。) / p>