Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Flex 4自定义文本输入皮肤->;新的图形元素由于某种原因变暗了?_Actionscript 3_Apache Flex_Flex4_Skinning_Spark Skinning - Fatal编程技术网

Actionscript 3 Flex 4自定义文本输入皮肤->;新的图形元素由于某种原因变暗了?

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

Flex4/AS3:我通过选择New->MXML皮肤并选择'TextInput-spark.components'作为主机组件,为TextInput创建了一个自定义皮肤。因此,我的出发点是“Spark TextInput组件的默认皮肤类”

在新的外观(称为“textinput_skin”)中,我添加了一个新的视觉元素,希望在文本输入中显示在文本的左侧

“按钮形状”应该看起来非常像这样: (因为我从Adobe示例中复制了绘制代码)

相反,在我的TextInput中,它如下所示:

这是我在自定义TextInput皮肤中的代码(大多数现在是新的,但我添加了新的视觉元素):


我使用皮肤,就像这样:

<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"];