У меня есть поле со списком, которое находится внутри панели в Flex 3. По сути, я хочу, чтобы панель исчезла, используя эффект Fade в ActionScript. Я могу заставить фейдеры работать нормально, но метка комбо-бокса не гаснет. У меня была такая же проблема с кнопками, и я обнаружил, что их шрифты нужно было встроить. Нет проблем. Я добавил встроенный шрифт, и ярлыки кнопок исчезли правильно. Я попробовал подобный подход к комбинированному списку, но он не исчезает метка выбранного элемента.
Вот что я сделал до сих пор: Вставьте код для шрифта вверху моего MXML-скрипта:
[Embed("assets/trebuc.ttf", fontName="TrebuchetMS")]
public var trebuchetMSFont:Class;
В моей функции инициализации
//register the font.
Font.registerFont(trebuchetMSFont);
Mxml комбинированного списка:
<mx:ComboBox id="FilterFields" styleName="FilterDropdown"
left="10" right="10" top="10"
fontSize="14">
<mx:itemRenderer>
<mx:Component>
<mx:Label fontSize="10" />
</mx:Component>
</mx:itemRenderer>
</mx:ComboBox>
И стиль, который я написал, чтобы применить шрифты к комбинированному списку:
.FilterDropdown
{
embedFonts: true;
fontFamily: TrebuchetMS;
fontWeight: normal;
fontSize: 12;
}
Причина, по которой мне пришлось писать стиль вместо того, чтобы помещать его в атрибут «FontFamily», заключалась в том, что стиль сделал весь текст в поле со списком правильным шрифтом, а атрибут «FontFamily» позволял использовать только элементы в раскрывающемся списке. правильный шрифт
Хм, я не уверен, почему это не работает для вас. Вот пример того, как я заставил это работать:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="fx.play([panel])">
<mx:Style>
@font-face {
src: local("Arial");
fontFamily: ArialEm;
}
@font-face {
src: local("Arial");
fontFamily: ArialEm;
fontWeight: bold;
}
@font-face {
src: local("Arial");
fontFamily: ArialEm;
font-style: italic;
}
</mx:Style>
<mx:XML id="items" xmlns="">
<items>
<item label="Item 1" />
<item label="Item 2" />
<item label="Item 3" />
</items>
</mx:XML>
<mx:Panel id="panel" x="10" y="10" width="250" height="200" layout="absolute">
<mx:ComboBox fontFamily="ArialEm" x="35" y="10" dataProvider="{items.item}" labelField="@label"></mx:ComboBox>
</mx:Panel>
<mx:Fade id="fx" alphaFrom="0" alphaTo="1" duration="5000" />
</mx:Application>
Надеюсь, что это помогает вам.
Вы часто можете использовать <mx: Dissolve> вместо <mx: Fade>, он выглядит почти идентично и не требует встроенных шрифтов.
Спасибо за вашу помощь. Была точно такая же проблема. Хитрость заключается во встраивании «жирного» варианта шрифта, который вы используете. Даже если шрифт в вашем ComboBox не установлен жирным шрифтом ...
«Растворение» работает путем затухания прямоугольника сплошного цвета внутри и снаружи вместо затухания фактического компонента. Это прекрасно работает, особенно если вы хотите контролировать цвет, до которого должен исчезать компонент. Однако иногда вам нужна прозрачность и, следовательно, вы должны использовать Fade. Есть небольшая хитрость, чтобы заставить Fade аккуратно работать как со шрифтами устройства, так и со встроенными шрифтами: используйте фильтр размытия без размытия.
По сути, когда вы устанавливаете растровый фильтр, проигрыватель внутренне создает растровую копию вашего объекта, к которой затем применяет фильтр. Если размытие установлено, чтобы не размытие, так сказать, оно все равно будет хорошо выглядеть и сможет прекрасно исчезать. Это нарушает функцию масштабирования проигрывателя, поскольку текст теперь растеризован.
<mx:Label id="percentage" text="{progress} %" truncateToFit="false">
<mx:filters>
<mx:BlurFilter blurX="0" blurY="0" />
</mx:filters>
</mx:Label>
var htm = $('#comboboxId').find('option:selected').html();