2012-06-28 55 views
1

我在Flex中仅使用一个DividedBox,其中只包含一个数据网格。当我点击Datagrid上的一个项目时,宽度为0%的第二个元素(Spark Group)被添加到分割框中以显示图像。Flex DividedBox儿童显示在外部

问题是,当第二个元素添加到DividedBox时,图像部分显示在DividedBox外面,我不想有这种行为。

这是一个有趣的代码:

<mx:DividedBox direction="horizontal" id="divider" borderColor="red" borderStyle="solid" borderVisible="true" right="10" left="10" top="10" bottom="10"> 
    <s:Group width="100%" height="100%"> 
     <!--datagrid--> 
    </s:Group> 
</mx:DividedBox> 

这里是添加则DividedBox(简化代码)的第二个孩子的一段代码:

private var _pdf_preview:Group = new Group(); 
[Bindable] 
[Embed(source="assets/image/llama.jpg")] 
private var imgClass:Class; 

protected function itemOnClickHandler(event:MouseEvent):void 
{ 
    _pdf_preview = new Group(); 
    var img:Image = new Image(); 
    img.source = imgClass; 
    _pdf_preview.addElement(img); 
    _pdf_preview.percentWidth = 0; 
    divider.addElement(_pdf_preview); 
} 

这里是一个屏幕问题(顺便说一下,不要注意我的技能瘸子:))。作为新用户,我无法将图片绑定到我的信息:screen showing my problem红色边框显示分隔框的限制

谢谢。 我希望没有太多的错误,英文不是我的母语。对不起,有任何英文错误。

PS:我无法添加“DividedBox”标签,因为它之前不存在,而我是“新用户”,因此我无法创建新标签。

回答

1

可以使用clipContent酒店在则DividedBox的边缘切断图像:

<mx:DividedBox clipContent="true" /> 

当使用Spark容器,clipAndEnableScrolling是你需要达到同样的目标财产。

我还想指出,您通常不需要通过ActionScript动态添加组件。您可以改用'状态'。例如:

<s:states> 
    <s:State name="normal" /> 
    <s:State name="image" /> 
</s:states> 

<mx:DividedBox clipContent="true"> 
    <s:DataGrid /> 
    <s:Image includeIn="image" /> 
</mx:DividedBox> 

现在,所有你需要做的,以显示图像,设置了currentStateimage

+0

谢谢你,clipContent属性作出了工作!关于我可以在mxml中做到这一点的事实。也许我做错了,但我不是Flex的mxml部分的忠实粉丝,我宁愿做ActionScript中的大部分事情。 –

+0

@pataprout我曾经分享过你的担忧,但我不再这样做。在AS中这样做会让你的生活变得艰难。 MXML确实使一些事情变得更容易。您只需要学习如何将MXML视图声明与ActionScript行为代码很好地分开。 – RIAstar

+0

有时它做这项工作,有时候不行。特别是,当我使用mxml配置事件时,遇到了很多问题,但是在完全AS中添加监听器时没有问题。我确信我正在处理的问题完全在于我对mxml的误解,但我无法找到如何在MXML中进行管理。 –