Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Can';t除非高度在Flex 3中已明确设置(以像素为单位),否则自动滚动VBox_Apache Flex_Flash_Flex3_Containers - Fatal编程技术网

Apache flex Can';t除非高度在Flex 3中已明确设置(以像素为单位),否则自动滚动VBox

Apache flex Can';t除非高度在Flex 3中已明确设置(以像素为单位),否则自动滚动VBox,apache-flex,flash,flex3,containers,Apache Flex,Flash,Flex3,Containers,我有一个VBox,它可以通过编程动态地添加和删除子对象。高度设置为100%,垂直滚动策略=自动 当用户希望将另一个子项添加到该Vbox时,我希望它自动滚动到Vbox的底部,因为该子项是在那里添加的 我已经尝试了在网上找到的所有解决方案,但无论如何,verticalScrollPosition和maxVerticalScrollPosition都始终等于0。即使我手动滚动到VBox的底部并按下一个按钮来提醒这些数字(即使在“validateNow()”之后) 我唯一能让这些数字改变程序的时候是当V

我有一个VBox,它可以通过编程动态地添加和删除子对象。高度设置为100%,垂直滚动策略=自动

当用户希望将另一个子项添加到该Vbox时,我希望它自动滚动到Vbox的底部,因为该子项是在那里添加的

我已经尝试了在网上找到的所有解决方案,但无论如何,verticalScrollPosition和maxVerticalScrollPosition都始终等于0。即使我手动滚动到VBox的底部并按下一个按钮来提醒这些数字(即使在“validateNow()”之后)

我唯一能让这些数字改变程序的时候是当VBox高度设置为像素时,我不希望这样,因为孩子们都有不同的高度


请告诉我是否可以设置垂直滚动位置,而无需硬编码像素高度?我是否遗漏了一些显而易见的内容?

实际上,您可能没有滚动VBox;如果您的VBox被另一个容器(如画布或类似容器)包含,并且您正在向VBox添加项目(如您所说),则执行滚动的是画布,而不是VBox,在这种情况下,VBox确实会为其滚动位置返回0

无论如何,你是对的——你必须设置组件的高度;即使是约束布局设置(例如,“bottom='10'”等)也不起作用。但是,如果您能够通过将VBox的维度以某种方式绑定到另一个控件,或者通过在子控件的附加/创建过程中显式地设置它们来设置VBox的高度,那么您应该能够完成所要完成的任务

下面是一个AIR应用程序的示例,我已经模拟了这个示例。基本上,它只是将随机大小的框添加到VBox中,并在创建每个子项后滚动到VBox的底部

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" verticalScrollPolicy="off" horizontalScrollPolicy="off" width="250">

    <mx:Script>
        <![CDATA[

            import mx.core.Application;
            import mx.containers.Box;
            import mx.events.FlexEvent;

            private function addItem(h:Number):void
            {
                var b:Box = new Box();
                b.width = 200;
                b.setStyle("backgroundColor", 0xFFFFFF);
                b.height = h;

                // Wait for the component to complete its creation, so you can measure and scroll accordingly later
                b.addEventListener(FlexEvent.CREATION_COMPLETE, b_creationComplete);
                vb.addChild(b);
            }

            private function b_creationComplete(event:FlexEvent):void
            {
                event.currentTarget.removeEventListener(FlexEvent.CREATION_COMPLETE, b_creationComplete);
                vb.verticalScrollPosition = vb.getChildAt(vb.numChildren - 1).y;
            }

        ]]>
    </mx:Script>

    <mx:VBox id="vb" top="10" right="10" left="10" height="{Application.application.height - 80}" verticalScrollPolicy="on" />
    <mx:Button label="Add Item" click="addItem(Math.random() * 100)" bottom="10" left="10" />

</mx:WindowedApplication>

在这种情况下,VBox的高度将绑定到其包含组件的高度(此处仅为应用程序)。其他一切都应该不言自明


希望有帮助!如果您有任何问题,请发回。

您是对的,这是一个滚动画布中不断增长的VBox。画布必须滚动。谢谢。我嵌套了好几层控件,当
height=“{this.height}”
不起作用时(我得到了一个滚动条,但是VBox有20像素高)