在Flex应用程序中显示元素边框?

问题描述:

有没有办法在Flex应用程序的(MXML)元素周围放置边框?我使用Inspect按钮描绘了类似于Firebug为HTML所做的事情(请参见http://getfirebug.com/html并搜索“检查”以了解我的意思)。在Flex应用程序中显示元素边框?

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

FlexSpy是另一种工具,可以让您浏览您的用户界面并检查属性。

+1

另请参阅:http://*.com/search?q=flex+firebug – regjo 2010-02-02 13:57:07

正如我即将发布这个,我想在Flex Builder 3中使用mxml编辑器的设计视图。这或多或少是我想要的。还有其他建议吗?

+0

您可以手动将它们放在那里,但设计视图对于布置绝大多数(如果不是全部)您的应用程序非常全面和优秀。 – invertedSpear 2010-02-01 21:28:19

+0

我不得不在源视图中修改一些位置属性(x和y),因为由于某些原因,设计视图与实际运行的应用程序不匹配。但设计观点确实有所帮助。 – regjo 2010-02-02 13:51:28

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

退房这里演示:http://lab.kapit.fr/demo/kapinspect/prod/index.html

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

我从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的名称或数据类型来进行筛选。

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

例如,如果你想给所有纵向方框透明的蓝色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); 
    } 
} 

希望有所帮助。