获取 Scroller 容器视图中的 HGroup 子组件 Adob​​e Flex 4.5

发布于 2025-01-02 04:52:24 字数 2715 浏览 2 评论 0原文

我已经在 HGroup 标签周围设置了一个 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: ____"/>

I have setup a Scroller container around an HGroup of labels. The Scroller is setup to only display a single label at a time. What I am trying to do is determine which label is in view of the Scroller when a button is clicked. I have scoured the reference material on Scrollers and HGroups, but cannot formulate a programmatic strategy to determine what element of the group is in view.

Scroller Code for reference:

<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>

Eventually these Labels will be images, but using labels for proof of concept currently.

Any help would be greatly appreciated, and thank you for reading.

EDIT:
So after implementing an approach with lastIndexInView, I keep getting "TypeError: Error #1009: Cannot access a property or method of a null object reference." on the line "vehicleID.text = Label(lObj).text;". Below is the code involved:

Function:

        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";
        }

Components:

<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: ____"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

枫林﹌晚霞¤ 2025-01-09 04:52:24

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

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

I think this should answer your question http://blog.flexexamples.com/2009/10/31/determining-how-much-of-an-item-is-visible-in-a-scrolling-vgroup-container-in-flex-4/

basically the layout has firstIndexInView and lastIndexInView property which will tell you which items are visible.

眼中杀气 2025-01-09 04:52:24

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

通过先改变状态,然后分配标签来解决这个问题。

The second issue I was running into was due to the fact I was trying to access the vehicleID component before it had actually been initialized. In other words, I was trying to change an element that wasn't included in the current state, but in fact, was a member of the next state.

Solved it by changing the state first, then assigning the label.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文