диалоговое окно предупреждения не показывает текст в flex 4 - PullRequest
2 голосов
/ 27 августа 2010

Я использую 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" />

Я пробовал разные вещи, такие как удаление всей информации о стиле (окно предупреждения отображается как синеватое поле, но снова текст того же цвета и, следовательно, невидим). Я удалил все фоновые градиенты и альфы из тега приложения. и т. д. и т. д. Я изменил «.alertMessage» на «alertMessage» в части стиля. Но несмотря ни на что, текст сообщения, заголовок и текст кнопки в окне предупреждения всегда невидимы. Я знаю, что текст там, как я уже сказал, потому что я могу навести курсор мыши на окно предупреждения и увидеть изменение курсора, а затем дважды щелкнуть и скопировать / вставить текст.

У меня есть подозрение, что это связано с другой проблемой, с которой я столкнулся в том же проекте, описанном здесь Автозаполнение во Flex 4.0 не отображает элементы в раскрывающемся списке

Кажется, что оба эти элемента управления имеют невидимый текст, как если бы цвет текста был таким же, как фон. Я попытался найти другие файлы стилей, файлы тем или что-то в проекте, которые будут отвечать за установку этих цветов. Но не смог найти ни одного. Проект относительно прост с одним mxml, 3 ".as" файлами, один из которых имеет логику проверки, а другой - анимацию ожидания. Третий имеет код бизнес-логики, но не имеет ничего общего с цветами или темами. Другие элементы управления в проекте - текстовые поля, кнопки, датагридсл, панели - все работает нормально. Это окно автозаполнения и окно предупреждения, которые, как кажется, не хотят отображать текст, который там есть.

Есть идеи или намеки на то, что может быть причиной проблемы?

Ответы [ 6 ]

1 голос
/ 10 января 2012

У меня возникла та же проблема после встраивания семейства шрифтов Arial в мое приложение. Внезапно оповещения и все другие текстовые компоненты Flex (например, всплывающие подсказки) становятся пустыми. Мне понадобилось время, чтобы найти это после того, как я попробовал все не слишком элегантные решения.

У меня даже не было "Использовать режим совместимости". Все снова заработало после проверки «Использовать Flash Text Engine в компонентах MX». Никогда бы не попробовал это.

Из того, что я могу сказать, Alert и остальные компоненты Flex теперь используют встроенный шрифт для отображения текстов, которые были намечены. Я предполагаю, что это как-то связано с новой платформой Text Layout Framework, которую они использовали для Flex4 в сочетании со встроенными шрифтами.

1 голос
/ 11 июля 2011

У меня была такая же проблема, и ответ Wiseman работал на меня.Я заметил, что опция компилятора очереди «Использовать Flash Text Engine в компонентах MX» также должна быть включена.

1 голос
/ 21 сентября 2010

Большое спасибо за такой вопрос, ваш ответ был также очень полезен - он показал способ копать. После почти 8 часов копания мне удалось найти еще одно решение этой проблемы.

Этот «невидимый» текст кажется проблемой неправильной миграции темы (Halo -> Spark).

1) Этой проблемы можно избежать, если вы НЕ используете аргумент «-compatibility-version = 3.0» (или равен флагу «Использовать режим совместимости с Flex 3» в Flex Builder).

2) В вашем проекте Flex 3 могут быть некоторые ошибки, связанные со стилями, и они исправляются путем изменения темы проекта по умолчанию на «Halo» в «Project-> Properties-> Flex Theme».

1 голос
/ 30 августа 2010

Хорошо, оказывается, это был проект Flex 3, который был импортирован во Flex 4. Он работает там, где он есть, и ломается там, где его нет. Я создал простой проект Flex 4 с окном оповещения, и оно сработало. Я медленно переместил весь свой код в этот проект, и он работал. Он дал мне предупреждение о теге стилей о невозможности использовать или что-то в этом роде. Я просто удалил все теги стиля, и он работал нормально. Это не выглядит одинаково, поэтому мне придется немного поиграться с этим, но по крайней мере текст появился. Так что что-то делать с темами и компилятором Flashbuilder, используя их во время компиляции.

Все, что я должен сказать, это то, что дерьмовый инструмент. Если импорт не работал, он должен был полностью провалиться давным-давно. Я искал и искал любые файлы проектов или файлы кода, которые были связаны с CSS, стилями или темами. Но очевидно, что он использовал что-то, что было независимым от моего проекта, чтобы контролировать некоторые крошечные части моего проекта. Параметры контроля в моем проекте существенно зависели от некоторых факторов окружающей среды и идеалов. Какую боль отлаживать.

Спасибо за помощь, ребята.

1 голос
/ 27 августа 2010

Я думаю, что фон и цвет текста для вашего оповещения белый.

попробуй

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;
}
0 голосов
/ 11 января 2012

У меня была эта проблема.Решение Хавьера Альвареса сработало для меня - но сама проблема возникла только тогда, когда я использовал режим «Слева направо»

...