使用HSlider:将事件强制转换为SliderEvent

时间:2011-09-05 20:26:37

标签: flex flex4 slider flex4.5

将纯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.

我该如何解决? <{3}}非常稀疏。

{4.5}仍然可以在Flex 4.5应用程序中使用吗?

1 个答案:

答案 0 :(得分:2)

change event不是SliderEvent;它发送一个通用事件。只需更改事件处理程序的方法签名即可删除错误。

    private function handleSlider(event:event):void { 

只需直接访问滑块即可访问滑块的值:

var hide:Number = slider.value;

或者可能使用事件的目标:

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

您引用的SliderEvent是MX事件;我不相信它在Spark实现中使用。

您可以查看ASDocs for the HSlider class