У меня есть поле со списком, которое находится внутри панели во 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>
Надеюсь, что это помогает вам.
Часто можно использовать
Спасибо за вашу помощь. Была точно такая же проблема. Уловка заключается во встраивании «жирной» версии шрифта, который вы используете. Даже если шрифт в вашем 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();
Кстати, кто-нибудь в мире действительно считает функцию масштабирования флеш-плеера функцией? Серьезно.