如何获得Combobox的标签淡入Flex

时间:2008-08-20 17:41:43

标签: flex actionscript-3

我有一个组合框位于Flex 3的面板内部。基本上我想在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”属性仅在下拉中创建项目-down使用正确的字体。

5 个答案:

答案 0 :(得分:3)

您经常可以使用&lt; mx:Dissolve&gt;而不是&lt; mx:Fade&gt;,它看起来几乎相同,不需要嵌入字体。

答案 1 :(得分:2)

嗯,我不知道为什么那不适合你。以下是我如何使用它的示例:

<?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>

希望这可以帮助你。

答案 2 :(得分:1)

通过淡入淡出纯色矩形而不是淡化实际组件来解决工作。这很好用,特别是当你想控制组件应该褪色的颜色时。但是,有时您需要透明度,因此必须使用淡化。使用设备字体和嵌入字体整齐地使用Fade有一个小技巧:使用没有模糊的模糊滤镜。

基本上,当您设置位图过滤器时,播放器会在内部创建对象的位图副本,然后应用过滤器。如果模糊设置为不模糊,可以说它仍然看起来很好并且能够完美地淡化。这会破坏播放器的缩放功能,因为文本现在已经光栅化了。

<mx:Label id="percentage" text="{progress} %" truncateToFit="false">
    <mx:filters>
        <mx:BlurFilter blurX="0" blurY="0" />
    </mx:filters>
</mx:Label>

答案 3 :(得分:0)

感谢您的帮助。 有完全相同的问题。 诀窍在于嵌入您正在使用的字体的“粗体”版本。 即使ComboBox中的字体未设置为粗体...

答案 4 :(得分:0)

var htm = $('#comboboxId').find('option:selected').html();