Actionscript 3 Flex 4自定义文本输入皮肤->;新的图形元素由于某种原因变暗了?
Flex4/AS3:我通过选择New->MXML皮肤并选择'TextInput-spark.components'作为主机组件,为TextInput创建了一个自定义皮肤。因此,我的出发点是“Spark TextInput组件的默认皮肤类” 在新的外观(称为“textinput_skin”)中,我添加了一个新的视觉元素,希望在文本输入中显示在文本的左侧 “按钮形状”应该看起来非常像这样: (因为我从Adobe示例中复制了绘制代码) 相反,在我的TextInput中,它如下所示: 这是我在自定义TextInput皮肤中的代码(大多数现在是新的,但我添加了新的视觉元素):Actionscript 3 Flex 4自定义文本输入皮肤->;新的图形元素由于某种原因变暗了?,actionscript-3,apache-flex,flex4,skinning,spark-skinning,Actionscript 3,Apache Flex,Flex4,Skinning,Spark Skinning,Flex4/AS3:我通过选择New->MXML皮肤并选择'TextInput-spark.components'作为主机组件,为TextInput创建了一个自定义皮肤。因此,我的出发点是“Spark TextInput组件的默认皮肤类” 在新的外观(称为“textinput_skin”)中,我添加了一个新的视觉元素,希望在文本输入中显示在文本的左侧 “按钮形状”应该看起来非常像这样: (因为我从Adobe示例中复制了绘制代码) 相反,在我的TextInput中,它如下所示: 这是我在自定义Te
我使用皮肤,就像这样:
<s:TextInput skinClass="model.textinput_skin" fontFamily="Arial" id="textinputid" name="item3" visible="true" editable="true" />
问题是图形元素变暗。看起来它的alpha值可能小于1,或者前面有另一个透明项。正如您在代码中看到的,我将文本颜色设置为0xFFFFFF,但它明显显示为比白色暗
有人能帮我确定是什么让我的元素变暗了吗
顺便说一下,我知道有“影子”元素。但在updateDisplayList()中,阴影仅在borderVisible==true时设置为可见。我尝试设置borderVisible=false,并尝试从蒙皮中完全删除阴影元素。这似乎不是问题所在
而且,我曾经用一个图像来代替编程来绘制形状。甚至连图像都变暗了
非常感谢。我找到了答案
在皮肤的其他地方是这段代码:
<fx:Script fb:purpose="styling">
<![CDATA[
import mx.core.FlexVersion;
private var paddingChanged:Boolean;
/* Define the skin elements that should not be colorized. */
static private const exclusions:Array = ["background", "textDisplay", "promptDisplay", "border"];
/* exclusions before Flex 4.5 for backwards-compatibility purposes */
static private const exclusions_4_0:Array = ["background", "textDisplay", "promptDisplay"];
... etc.
我需要将我的新元素添加到排除数组中,使其成为“不应着色的皮肤元素”之一。我不知道为什么,但这解决了它
新代码:
<fx:Script fb:purpose="styling">
<![CDATA[
import mx.core.FlexVersion;
private var paddingChanged:Boolean;
/* Define the skin elements that should not be colorized. */
static private const exclusions:Array = ["text_img", "background", "textDisplay", "promptDisplay", "border"];
/* exclusions before Flex 4.5 for backwards-compatibility purposes */
static private const exclusions_4_0:Array = ["text_img", "background", "textDisplay", "promptDisplay"];
其中text\u img是绘制图形元素的组的id。是否在新图形元素上方显示提示?这会使皮肤变暗。此外,为了解决问题,请先对皮肤的各个部位进行评论。Adobe的皮肤中有很多图形元素。不要注释掉所需的皮肤部分(id=“textDisplay”的RichEditableText)。这可能有助于你理解每一种元素是什么,以及你神秘的东西是从哪里来的。我认为没有提示。(我相信提示的意思是像“在此处输入文本”)这样的文本。我曾尝试从皮肤中删除更多图形元素,但它会导致崩溃,因为组件希望零件出现在那里。
<fx:Script fb:purpose="styling">
<![CDATA[
import mx.core.FlexVersion;
private var paddingChanged:Boolean;
/* Define the skin elements that should not be colorized. */
static private const exclusions:Array = ["text_img", "background", "textDisplay", "promptDisplay", "border"];
/* exclusions before Flex 4.5 for backwards-compatibility purposes */
static private const exclusions_4_0:Array = ["text_img", "background", "textDisplay", "promptDisplay"];