Использование HSlider: приведение события к SliderEvent - PullRequest
2 голосов
/ 06 сентября 2011

Портирование приложения Flash / AS3 на Flex 4.5, этот код:

<fx:Script>
    <![CDATA[
        import mx.events.SliderEvent;
        import flash.filters.ColorMatrixFilter;

        private function handleSlider(event:SliderEvent):void { 
            var hide:Number = event.value;
            _settings.data.hide = hide;
            _settings.flush();

            if (hide >= 0.8) {
                filters = null;
            } else {
                var matrix:Array = new Array();
                matrix = matrix.concat([1, 0, 0, 0, 1]);    // red
                matrix = matrix.concat([0, 1, 0, 0, 1]);    // green
                matrix = matrix.concat([0, 0, 1, 0, 1]);    // blue
                matrix = matrix.concat([0, 0, 0, hide, 1]); // alpha

                filters = [ new ColorMatrixFilter(matrix) ];
            }
        }
     .......
        <s:HSlider id="_hide" right="8" bottom="30" width="80"
        minimum="0.25" maximum="1.00" value="1.00" stepSize="0.25"
        change="handleSlider(event)" />

дает мне ошибку

Implicit coercion of a value with static type flash.events:Event 
    to a possibly unrelated type mx.events:SliderEvent.

Как мне это исправить? Adobe HSlider doc необычайно редок.

Можно ли использовать mx.events.SliderEvent в приложении Flex 4.5?

1 Ответ

2 голосов
/ 06 сентября 2011

Событие change не является SliderEvent;он отправляет общее событие.Просто измените сигнатуру метода для вашего обработчика событий, чтобы удалить ошибку.

    private function handleSlider(event:event):void { 

Вы можете получить доступ к значению ползунка, просто обратившись к ползунку напрямую:

var hide:Number = slider.value;

Или, возможно, используя цель события:

var hide:Number = (event.target as HSlider).value;

SliderEvent , на который вы ссылаетесь, является MX-событием;и я не верю, что он используется в реализации Spark.

Вы можете ознакомиться с документами ASDocs для класса HSlider .

...