Apache flex 如何在Flex中找到鼠标指针下的列表项?

Apache flex 如何在Flex中找到鼠标指针下的列表项?,apache-flex,Apache Flex,我有一些列表和TileList控件。如何获取当前位于鼠标指针下的列表项的引用?为鼠标列表中的每个项添加一个事件侦听器,然后在函数中它将成为事件。currentTarget为鼠标列表中的每个项添加一个事件侦听器,然后在函数中它将成为事件。currentTargetFlex 3的列表/TileList中有一个简单的方法: ListEvent.ITEM\u ROLL\u OVER也有一系列有用的属性: event.itemRenderer event.rowIndex event.columnIn

我有一些列表和TileList控件。如何获取当前位于鼠标指针下的列表项的引用?

为鼠标列表中的每个项添加一个事件侦听器,然后在函数中它将成为事件。currentTarget为鼠标列表中的每个项添加一个事件侦听器,然后在函数中它将成为事件。currentTargetFlex 3的列表/TileList中有一个简单的方法:

ListEvent.ITEM\u ROLL\u OVER
也有一系列有用的属性:

  • event.itemRenderer
  • event.rowIndex
  • event.columnIndex

您可以通过
event.itemRenderer.data
获取滚动数据,并使用
tileList.dataProvider.getItemIndex(event.itemRenderer.data)
在Flex 3的列表/tileList中有一个简单的方法来实现这一点:

ListEvent.ITEM\u ROLL\u OVER
也有一系列有用的属性:

  • event.itemRenderer
  • event.rowIndex
  • event.columnIndex

您可以通过
event.itemRenderer.data
获取滚动数据,并使用
tileList.dataProvider.getItemIndex(event.itemRenderer.data)

从中选择索引,谢谢您的回答。我最终想到了一些不同的东西,我想我也会分享它。我选择这个解决方案的主要原因是,我实际上是在响应一个外部事件,因为我正在使用库捕获Javascript中的右键单击。当鼠标右键单击时,用户不一定在移动鼠标。我可以随时跟踪指针指向的项目,但我认为这会变得复杂。无论如何,我的解决方案是通过子类化List来实现的,比如:

package components{
    import mx.controls.List
    use namespace mx_internal

    public class MyList extends List{

        public function findItemIndexForMouse(stageX:Number, stageY:Number):Number{
            var item
            var pt:Point = new Point(stageX, stageY)
            pt = listContent.globalToLocal(pt)
            var rc:int = listItems.length
            for (var i:int = 0; i < rc; i++)
            {
                if (rowInfo[i].y <= pt.y && pt.y < rowInfo[i].y + rowInfo[i].height)
                {
                    item = listItems[i][0]
                    break
                }
            }
            return itemRendererToIndex(item)
        }
    }
}
包组件{
导入mx.controls.List
使用名称空间mx_internal
公共类MyList扩展列表{
公共函数findItemDeformouse(stageX:Number,stageY:Number):Number{
变量项
变量点:点=新点(stageX,stageY)
pt=listContent.globalToLocal(pt)
var rc:int=listItems.length
对于(变量i:int=0;i如果(行信息[i].y感谢迄今为止的答案。我最终想出了一些不同的想法,并认为我也会分享。我选择此解决方案的主要原因是,我实际上是在响应外部事件,因为我正在使用库捕获Javascript中的右键单击。当右键单击发生时,用户可能不需要我一直在移动鼠标。我可以随时跟踪指针在哪个项目上,但我认为这会变得复杂。无论如何,我的解决方案是通过对列表进行子类化,例如:

package components{
    import mx.controls.List
    use namespace mx_internal

    public class MyList extends List{

        public function findItemIndexForMouse(stageX:Number, stageY:Number):Number{
            var item
            var pt:Point = new Point(stageX, stageY)
            pt = listContent.globalToLocal(pt)
            var rc:int = listItems.length
            for (var i:int = 0; i < rc; i++)
            {
                if (rowInfo[i].y <= pt.y && pt.y < rowInfo[i].y + rowInfo[i].height)
                {
                    item = listItems[i][0]
                    break
                }
            }
            return itemRendererToIndex(item)
        }
    }
}
包组件{
导入mx.controls.List
使用名称空间mx_internal
公共类MyList扩展列表{
公共函数findItemDeformouse(stageX:Number,stageY:Number):Number{
变量项
变量点:点=新点(stageX,stageY)
pt=listContent.globalToLocal(pt)
var rc:int=listItems.length
对于(变量i:int=0;i