0

私は現在、このようなスピナーを作成しています

                    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()

誰もが私がこのプロパティを使用する方法、またはスピナーでこれを行うためのより良い方法を知っています

4

1 に答える 1

0

「currentCSSState」という名前のプロパティはありません。ただし、SpinnerコントロールにはstepSize、ボタンをクリックしたときにスピナーがどれだけ増加/減少するかを制御するプロパティがあります。を 2 に設定するstepSizeと、これは探しているものに近いようです。

スピナーが値をインクリメント/デクリメントする方法をより詳細に制御したい場合は、ボタンをクリックしたときに実行されるSpinnerコントロールのメソッドincrementButton_buttonDownHandler()とをオーバーライドできます。decrementButton_buttonDownHandler()

これらのメソッドの 1 つのデフォルトの実装を次に示します。

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()メソッドを調べて、それが何をしているのかを確認することをお勧めします (最小/最大値を尊重し、最後に到達した場合に値を最初にラップさせるなど)。

于 2012-12-20T16:45:18.133 に答える