先说一下我这个是做什么的,这个效果是鼠标移到隐藏显示面板,本来显示的,就应该隐藏起来,像姓名,职业那些就隐藏起来了,只会显示“隐藏显示”,如果我鼠标再移上去的话,那些姓名,职业又可以滑下来显示了
今天发现了一个问题,
看图:
1.初始状态
2.鼠标点上去
这里,大家可以看到,出现了一个问题,我鼠标移上去,理应那些姓名等等的应该隐藏起来,可是现在就好像是浮在页面最表层,隐藏不了
但是,当我双击浏览器,阿门出现了,上图,
图3:
却可以显示出我要的效果了,我很奇怪,flex4的bug吗?
问题补充
smithfox 写道
从现象上看应该是 "双击浏览器" 触发了resize事件后,再次触发commitproperties或是updateDisplayList, 得以更新.
必须上代码, 才能看出问题
必须上代码, 才能看出问题
其实就是对image组件的rollOut、rollOver这2个事件的捕捉,
通过includeLayout、Move来完成这个效果,但是就是会出现那个问题
问题补充
smithfox 写道
整个过Move过程, 都是浮在上面的吗?
父容器是什么?
你设置这个includeLayout是动态设置还是, 直接在mxml就设置好了?
别人不知道具体代码,真的无法看出问题. 你说是吧
父容器是什么?
你设置这个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!