flex4效果的一个奇怪现象

   先说一下我这个是做什么的,这个效果是鼠标移到隐藏显示面板,本来显示的,就应该隐藏起来,像姓名,职业那些就隐藏起来了,只会显示“隐藏显示”,如果我鼠标再移上去的话,那些姓名,职业又可以滑下来显示了

   今天发现了一个问题,

看图:

1.初始状态

 

 

2.鼠标点上去

 

 

 

这里,大家可以看到,出现了一个问题,我鼠标移上去,理应那些姓名等等的应该隐藏起来,可是现在就好像是浮在页面最表层,隐藏不了

但是,当我双击浏览器,阿门出现了,上图,

 

图3:

 

 

 

却可以显示出我要的效果了,我很奇怪,flex4的bug吗?

 


问题补充
smithfox 写道
从现象上看应该是 "双击浏览器" 触发了resize事件后,再次触发commitproperties或是updateDisplayList, 得以更新.

必须上代码, 才能看出问题



其实就是对image组件的rollOut、rollOver这2个事件的捕捉,
通过includeLayout、Move来完成这个效果,但是就是会出现那个问题

问题补充
smithfox 写道
整个过Move过程, 都是浮在上面的吗?
父容器是什么?
你设置这个includeLayout是动态设置还是, 直接在mxml就设置好了?

别人不知道具体代码,真的无法看出问题. 你说是吧




父容器就用了BorderContainer,里面有一个Image对象 ,这里不用includeLayout了,直接设置y坐标的值,来改变位置

O(∩_∩)O~,贴出一部分代码,你帮我瞧瞧,

 

  
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        <s:Bounce id="bounceEasing"/>
        <s:Elastic id="elasticEasing"/>
        <s:Move id="movein" yTo="0" duration="500" easer="{bounceEasing}"/>
        <s:Move id="moveout" yTo="-235" duration="500" easer="{elasticEasing}"/>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.effects.easing.Bounce;
            private function rolloverHandler():void{
                if(img.y==-235)
                    movein.play([img]);
            }
            private function rolloutHandler():void{
                if(img.y==0)
                    moveout.play([img]);
            }
        ]]>
    </fx:Script>

    <s:BorderContainer id="box2"
            height="100%" 
            width="100%"
            backgroundColor="#cccccc"
            borderAlpha="1" 
            borderStyle="solid"
            cornerRadius="9"
            dropShadowVisible="false"
            >
        
        <s:layout>
            <s:BasicLayout/> 
        </s:layout>
    
        <mx:Image 
            id="img" buttonMode="true" 
            source="@Embed('assets/img/弹出框.png')" y="-235"
            rollOut="rolloutHandler()"
            rollOver="rolloverHandler()"/>
    </s:BorderContainer>

 


问题补充
smithfox 写道
<s:layout><s:BasicLayout clipAndEnableScrolling="true" /></s:layout>


加了这个属性,没有那个问题了

自己一直对这个属性视而不见,

clipAndEnableScrolling属性:
  设置为false,即如果子组件的大小大于容器,那子组件将越过容器边界显视
  设置为true,即超出容器部份将不显视

 

 

谢谢smithfox!

 

/s:layout

从现象上看应该是 "双击浏览器" 触发了resize事件后,再次触发commitproperties或是updateDisplayList, 得以更新.

必须上代码, 才能看出问题

整个过Move过程, 都是浮在上面的吗?
父容器是什么?
你设置这个includeLayout是动态设置还是, 直接在mxml就设置好了?

别人不知道具体代码,真的无法看出问题. 你说是吧