获取一个HGroup子组件,它是在Scroller容器Adobe Flex 4.5中查看的

时间:2012-02-01 22:56:35

标签: actionscript-3 flex flex4 flash-builder flex-spark

我在HGroup标签周围设置了一个Scroller容器。 Scroller设置为一次只显示一个标签。我想要做的是确定单击按钮时Scroller可以看到哪个标签。我已经在Scrollers和HGroups上搜索了参考资料,但是无法制定程序化策略来确定该组中的哪个元素。

滚动码参考:

<local:Scroller id="imageViewer" includeIn="startState" left="411" right="411" top="241"
                    bottom="356" depth="2"> 
    <s:HGroup id="imageGroup" gap="0" width="100%" height="100%"> 
        <s:Label id="vin1337" width="201" height="104" color="white" fontSize="30"
                 text="Vehicle ID:1337" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin2567" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:2567" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin9456" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:9456" textAlign="center" verticalAlign="middle"/>
    </s:HGroup> 
</local:Scroller>

最终这些标签将是图像,但目前使用标签进行概念验证。

非常感谢任何帮助,感谢您的阅读。

编辑: 因此,在使用lastIndexInView实现方法之后,我不断收到“TypeError:错误#1009:无法访问空对象引用的属性或方法”。在“vehicleID.text = Label(lObj).text;”一行。以下是涉及的代码:

功能:

        protected function idSelect_clickHandler(event:MouseEvent):void
        {
            var hLay:HorizontalLayout = imageGroup.layout as HorizontalLayout;
            var lIndex:int = hLay.lastIndexInView;
            var lObj:Object = imageGroup.getElementAt(lIndex);

            vehicleID.text = Label(lObj).text;

            currentState="selectedState";
        }

组件:

<local:SnapScroller id="imageViewer" includeIn="startState" left="411" right="411" top="241"
                    bottom="356" depth="2"> 
    <s:HGroup id="imageGroup" gap="0" width="100%" height="100%"> 
        <s:Label id="vin1337" width="201" height="104" color="white" fontSize="30"
                 text="Vehicle ID:1337" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin2567" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:2567" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin9456" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:9456" textAlign="center" verticalAlign="middle"/>
    </s:HGroup> 
</local:SnapScroller>

<s:Button id="idSelect" includeIn="startState" x="367" y="608" width="290" height="67"
          label="Select" click="idSelect_clickHandler(event)" color="#00008F" fontSize="24"/>

<s:Label id="vehicleID" includeIn="selectedState" x="425" y="453" color="#00008F" fontSize="24"
         text="Vehicle ID: ____"/>

2 个答案:

答案 0 :(得分:0)

我认为这应该回答你的问题http://blog.flexexamples.com/2009/10/31/determining-how-much-of-an-item-is-visible-in-a-scrolling-vgroup-container-in-flex-4/

基本上布局有firstIndexInView和lastIndexInView属性,它会告诉你哪些项是可见的。

答案 1 :(得分:0)

我遇到的第二个问题是由于我在实际初始化之前尝试访问vehicleID组件。换句话说,我试图改变一个未包含在当前状态中的元素,但事实上,它是下一个州的成员。

首先通过更改状态解决问题,然后分配标签。