淡化效果应用于相邻的ItemRenderer

时间:2011-11-30 09:03:43

标签: actionscript-3 flex flash-builder mxml flexbuilder

我对s:Fade事件s:ItemRenderer上的mouseOver效果。淡入淡出效果结束很好,但执行期间,它仅应用于ItemRenderer对象的一半,加上一半相邻(右)ItemRenderer

ItemRenderer个对象位于使用s:List的{​​{1}}内。

以下是名为HorizontalLayout的{​​{1}}的代码:

ItemRenderer

以下是FilterTagRenderer的代码:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="false"
                mouseOver="{fadeIn.play()}"
                mouseOut="{alpha = 0.6}"
                alpha="0.6">

    <fx:Declarations>
        <s:Fade id="fadeIn" alphaTo="1" duration="500" target="{this}"/>
    </fx:Declarations>

    <s:Label id="lblFilterName" text="{data}" paddingBottom="5" fontWeight="bold" fontSize="14"/>

</s:ItemRenderer>

我使用的是Flex SDK 4.0。

有谁知道这是flex中的错误还是我做错了什么?

由于

2 个答案:

答案 0 :(得分:0)

你做的事情有点不对,因为使用Spark组件你应该让状态改变运行,而不是试图自己运行它。但是,引擎盖下的效果只是单个DisplayObject上的一个过滤器,因此我不确定如何获得部分在两个不同对象上的效果。您的渲染器可能不在您认为的位置。如果您使用Flex附带的布局之一会发生什么,例如TileLayout?

答案 1 :(得分:0)

好像是一个错误。

重现步骤:只需编译并运行以下两个文件,然后将鼠标移到任何单词上。

申请文件(FadeBug.mxml):

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
        ]]>
    </fx:Script>

    <s:List dataProvider="{new ArrayCollection('The quick brown fox jumped over the lazy dog'.split(' '))}"
            itemRenderer="BuggyItemRenderer" >
        <s:layout>
            <s:HorizontalLayout gap="6"/>
        </s:layout>
    </s:List>

</s:Application>

BuggyItemRenderer.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="false"
                alpha="0.4"
                mouseOver="{fadeEffect.play()}"
                mouseOut="itemrenderer1_mouseOutHandler(event)">

    <fx:Script>
        <![CDATA[
            protected function itemrenderer1_mouseOutHandler(event:MouseEvent):void
            {
                if (fadeEffect.isPlaying) {
                    fadeEffect.stop();
                }
                this.alpha = 0.4;
            }
        ]]>
    </fx:Script>


    <fx:Declarations>
        <s:Fade id="fadeEffect" target="{this}" alphaFrom="0.4" alphaTo="1"/>
    </fx:Declarations>

    <s:Label text="{data}" fontSize="25" fontWeight="bold"/>

</s:ItemRenderer>