Adobe Flex / Actionscript:可编辑标签

时间:2012-02-21 15:01:43

标签: actionscript-3 flex actionscript adobe label

我正在开发一个项目,如果我们有editbale标签或TextInput的一个区域看起来像一个Label,如果它没有用鼠标悬停,那将是非常好的。

我是Flex的新手,并且不知道如何开发皮肤。我甚至不知道是否可以通过剥皮来做到这一点。

无论如何,我在几个月前发现了this的问题,但我无法让它工作,只是显示一个空的白页。

这里是我用来创建上面链接中提到的可编辑标签的代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:component="com.npacemo.component.*"
           xmlns:skins="skins.*">
<fx:Declarations>
    <!-- Platzieren Sie nichtvisuelle Elemente (z. B. Dienste, Wertobjekte) hier -->
</fx:Declarations>
<s:BorderContainer>     
    <component:EditableLabel text="Text 132"  skinClass="skins.EditableLabel" />
</s:BorderContainer>

</s:Application>

知道为什么显示的页面是空的吗?还是一种不同的方法?

提前致谢, 马库斯

2 个答案:

答案 0 :(得分:0)

在我们正在开展的项目中,我们通过使用文本框并删除背景和边框来做可编辑的标签(它看起来就像一个标签,可以编辑)。在你的情况下,你可以这样做然后在鼠标上你可以再次显示边框和背景(使它看起来像一个文本框),然后再重新显示直到样式的MouseOut。

答案 1 :(得分:0)

我在这个可编辑的标签上遇到了同样的问题 我认为根本原因来自SkinPart:labelComponent。在皮肤内部,标签是这样的:

<s:Label id="labelComponent" text="{hostComponent.text}"
         alpha.normal="1" alpha.selected="0" 
         visible.normal="true" visible.selected="false"
         verticalCenter="0" width="{this.width+20}" maxDisplayedLines="1"
         textDecoration="underline" buttonMode="true"/>

由于宽度设置导致自引用循环,因此label会抛出异常。这里的解决方案只是清除宽度设置:

<s:Label id="labelComponent" text="{hostComponent.text}"
         alpha.normal="1" alpha.selected="0" 
         visible.normal="true" visible.selected="false"
         verticalCenter="0" maxDisplayedLines="1"
         textDecoration="underline" buttonMode="true"/>

现在可以显示该组件 我发现在Application和View中显示组件之间存在差异。在Application中,会自动捕获一些异常,使调试过程变得更加困难 希望这会有所帮助!