【问题标题】:The items hover of DropDownList's itemRendererDropDownList 的 itemRenderer 的项目悬停
【发布时间】:2013-06-07 08:34:51
【问题描述】:

我在相关皮肤上有一个 DropDownList 和一个 itemRenderer。我的 itemRenderer 的项目是 SWFLoader 对象,它在我的 DropDownList 中显示 swf 文件。 每行的高度必须为 27px,因此我减小了 SWFLoader 对象的高度和宽度以使其适合每一行,并设置这些 atts:

verticalCenter="2" verticalAlign="middle"

在每一行中对齐它们。但是由于我的 SWFLoader 的内容具有不同的宽度/高度,我遇到了项目的鼠标悬停相互重叠的问题。我也为我的 SWFLoader 设置了这些,但仍然没有更改:

mouseEnabled="false" mouseChildren="false"

下面是我的代码简介:

<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="true" 
            height="27" width="100%">
<fx:Script>
    <![CDATA[           
        override public function set data(value:Object):void{
            super.data = value;
            // rest of codes
        }           
    ]]>
</fx:Script>

<s:SWFLoader left="5" right="5"
             height="65"
             verticalCenter="2" verticalAlign="middle"
             mouseEnabled="false" mouseChildren="false" 
             source="{data}" smoothBitmapContent="true" />

有什么建议吗?!

【问题讨论】:

  • 我不确定我是否理解悬停时出现的问题,也许屏幕截图会有所帮助。还有,你说你把渲染器的高度设置为27,但是为什么渲染器里面的SWFLoader的高度是65呢?
  • 1) 您可以这样想象:您的下拉列表中有 5 个项目。您将光标放在第二个项目上,但突出显示将显示第三个! / 2) 我生成的 SWFLoader 内容在形状的顶部和底部都有空格。因此,如果我将它们保持为“65”,则形状将在每一行中正确显示,但如果我将其设置为“27”,它将根据这些银行空间缩小整个内容(由于某些原因,我无法删除那些空白)跨度>

标签: apache-flex drop-down-menu mouseover itemrenderer swfloader


【解决方案1】:

问题在于 SWFLoader 正在捕获鼠标事件。所以我只是把它放在 Canvas 中并为 ItemRenderer 设置mouseChildren="false"。 还将 Canvas 的滚动策略设置为 0:

horizontalScrollPolicy="off" verticalScrollPolicy="off"

现在 SWFLoader 不会捕获鼠标事件,并且 dropDownList 中的悬停项目不会相互重叠。

P.S:感谢我的一位同事帮助我:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多