警报对话框未显示flex 4中的文本

时间:2010-08-27 07:42:20

标签: flex flash actionscript-3 flex4 flash-builder

我正在使用Flex 4并遇到一些显示简单警报框的问题。警告框显示,但文本似乎与背景颜色相同。我知道文本是存在的,因为如果我在警告框窗口中鼠标悬停到大致文本所在的位置,我可以看到光标发生变化。当我双击并复制粘贴到记事本中时,我可以看到该消息。但是消息,按钮文本,消息框标题都没有显示出来。

我项目中的相关代码如下

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:s="library://ns.adobe.com/flex/spark" layout="absolute"
initialize="{initialiseFlex()}"  backgroundGradientAlphas="[1.0, 1.0]"
backgroundGradientColors="[#FFFFFF, #FFFFFF]"
xmlns:ns2="keyboard.*" xmlns:ns1="com.adobe.flex.extras.controls.*" 
minHeight="864"  minWidth="1024" verticalScrollPolicy="off" width="1024">

<mx:Script>
            <![CDATA[
                    import mx.binding.utils.BindingUtils;
                    import flash.net.sendToURL;
                    import mx.utils.URLUtil;
                    import mx.managers.IBrowserManager;
                    import mx.managers.BrowserManager;
                    import mx.controls.Alert;

            ]]>
    </mx:Script> 

    <mx:Style>
            Alert {
                    titleStyleName: "alertTitle";
                    message-style-name: "alertMessage";
                    buttonStyleName: "alertButton";
                    background-color: #ffffff;
                    header-colors : #F4800E, #F4800E;
                    border-color : #F4800E;
                    corner-radius :6;
                    font-anti-alias-type:advanced;
            }
            .alertMessage {
                    fontSize: 20;
                    color: black;

            }
    </mx:Style>

<mx:Button click="Alert.show('From inside mxml')" 
enabled="false" x="580" y="440" label="Sign Out" id="btnSignOut" fontSize="24" 
labelPlacement="right" color="#F4800E" />

我尝试了各种各样的东西,例如删除所有样式信息(警告框显示为蓝色框,但文本颜色相同,因此不可见)。我已从应用程序标记中删除了所有backgroundgradientcolos和alphas。我已经在样式部分将“.alertMessage”更改为“alertMessage”。但无论如何,警报框中的消息文本,标题和按钮文本始终是不可见的。据我所知,我知道文本就在那里,因为我可以将鼠标悬停在警告框上并看到光标变化,然后双击并复制/粘贴文本。

我怀疑这与我在此处描述的同一项目中遇到的另一个问题有关Autocomplete in Flex 4.0 not displaying items in dropdown list

这两个控件似乎都有不可见的文本,就好像文本颜色设置与背景相同。我试图寻找其他样式文件,主题文件或项目中负责设置这些颜色的东西。但找不到任何东西。该项目相对简单,有一个mxml,3“.as”文件,其中一个文件具有验证逻辑,另一个文件具有等待错误。第三个有业务逻辑代码,但与颜色或主题无关。项目中的其他控件 - 文本框,按钮,datagridsl,面板都可以正常工作。它的自动完成框和警告框似乎不想显示那里的文本。

可能导致问题的任何想法或提示?

6 个答案:

答案 0 :(得分:1)

我认为警报的背景和文字颜色是白色的。

尝试

Alert 
{

       color: #000000;

       titleStyleName: "alertTitle";
       message-style-name: "alertMessage";
       buttonStyleName: "alertButton";
       background-color: #ffffff;
       header-colors : #F4800E, #F4800E;
       border-color : #F4800E;
       corner-radius :6;
       font-anti-alias-type:advanced;
}

答案 1 :(得分:1)

好的,事实证明该项目是一个导入Flex 4的Flex 3项目。它可以在它所处的位置工作,并在不存在的地方发生故障。我用一个警告框创建了一个简单的Flex 4项目并且它工作正常。我慢慢地将我的所有代码移到了这个项目中,并且它有效。它给了我关于不能使用的样式标签或类似的东西的警告。我刚刚删除了所有的样式标签,它工作正常。它看起来不一样,所以我不得不再多说一点,但至少文字出现了。这与主题和Flashbuilder编译器在编译时使用它们有关。

我只能说是一个糟糕的工具。如果导入不起作用,它应该在很久以前就失败了。我搜索并搜索了与css或样式或主题相关的任何项目文件或代码文件。但很明显,它使用了一些独立于我项目的东西来控制我项目的一些小部分。我项目中控件的参数基本上取决于一些环境/因素。调试真是太痛苦了。

感谢你们的帮助。

答案 2 :(得分:1)

非常感谢你提出这样的问题,你的回答也很有帮助 - 它展示了一种挖掘方式。 经过近8个小时的挖掘,我找到了另一个解决方案。

这个“隐形”文本似乎是主题迁移不正确的问题(Halo - &gt; Spark)。

1)如果您不使用“-compatibility-version = 3.0”参数(或在Flex Builder中使用“使用Flex 3兼容模式”标志),则可以避免此问题。

2)Flex 3项目中可能存在一些与样式有关的错误,并通过在“Project-&gt; Properties-&gt; Flex Theme”中将默认项目主题更改为“Halo”来修复它们。

答案 3 :(得分:1)

我遇到了同样的问题,Wiseman的答案对我有用。我注意到必须启用que编译器选项“在MX组件中使用Flash文本引擎”。

答案 4 :(得分:1)

将Arial字体系列嵌入到我的应用程序后,我遇到了同样的问题。突然警报和所有其他Flex组件文本(如工具提示)我们都是空的。在尝试了各种不那么优雅的解决方案后,我花了一段时间才找到它。

我甚至没有启用“使用兼容模式”。选中“在MX组件中使用Flash文本引擎”后,一切都恢复正常。从来没有尝试过。

据我所知,Alert和其他Flex组件现在使用嵌入式字体来显示预期用途的文本。我猜这与他们用于Flex4的新文本布局框架结合嵌入字体有关。

答案 5 :(得分:0)

我遇到了这个问题。哈维尔阿尔瓦雷斯解决方案为我工作 - 但问题本身只发生在我使用从右到左躺着