在Flex App中显示元素边框?

时间:2010-02-01 21:21:31

标签: flex layout

有没有办法在Flex应用程序的(MXML)元素周围放置边框?我正在想象类似于Firebug使用Inspect按钮为HTML做的事情(参见http://getfirebug.com/html并搜索“inspect”以查看我的意思。)

这样做的原因是我在布局方面遇到了一些麻烦。

4 个答案:

答案 0 :(得分:3)

你可以试试“Kap Inspect”,它可能是最接近Flex环境中的firebug的东西。

在此处查看演示:http://lab.kapit.fr/demo/kapinspect/prod/index.html

从这里下载:http://lab.kapit.fr/display/kapinspect/Kap+Inspect

答案 1 :(得分:3)

FlexSpy是另一种工具,可让您浏览UI并检查属性。

答案 2 :(得分:1)

我已经多次这样做,以找出布局问题,但不是来自MXML。

在AS中,您可以在给定组件的图形层中绘制矩形。

一种方法是为父级MXML组件creationComplete事件创建一个侦听器,并在那里绘制矩形 - 您必须等到所有内容都完成实例化和测量以确保您具有正确的尺寸。

如果您的应用可以调整大小,您还需要创建一个调整大小的侦听器。

松散的东西,像这样:

private function creationCompleteListener():void
{
    drawRectanglesAroundDisplayElements();
}

private function drawRectanglesAroundDisplayElements():void
{
    for each(var displayElement:DisplayObject in displayList)
    {
        var graphicsLayer:Graphics = displayElement.graphics;
        graphicsLayer.lineStyle(1,0xFF0000);
        graphicsLayer.drawRect(0,0,displayElement.width, displayElement.height);
    }
}

它将遍历所有显示对象,包括DisplayObjectContainer对象,并在它们周围放置1px红色边框。

您可能更喜欢仅突出显示某些类型的显示对象,如果是,则可以通过检查给定的DisplayObject的名称或数据类型来进行筛选。

有时我会为某些对象添加半透明背景的填充。我发现重叠背景比相交线更容易看到(当然,这通常是不可行的)。

例如,如果您想为所有VBox提供透明的蓝色bg以及红色轮廓,您可以像这样修改上述内容:

private function drawRectanglesAroundDisplayElements():void
{
    for each(var displayElement:DisplayObject in displayList)
    {
        var graphicsLayer:Graphics = displayElement.graphics;

        if(displayElement is VBox)
        {
            graphicsLayer.beginFill(0x0000FF,.3);
            graphicsLayer.drawRect(0,0,displayElement.width, displayElement.height);
            graphicsLayer.endFill();
        }

        graphicsLayer.lineStyle(1,0xFF0000);
        graphicsLayer.drawRect(0,0,displayElement.width, displayElement.height);
    }
}

希望有所帮助。

答案 3 :(得分:0)

正如我即将发布的那样,我想到了在Flex Builder 3中使用mxml编辑器的Design视图。这或多或少地做了我想要的。还有其他建议吗?