如何获取组合框标签以淡入Flex

时间:2020-03-05 18:41:12  来源:igfitidea点击:

我在Flex 3的面板内部有一个组合框。基本上,我想使用ActionScript中的"淡入淡出"效果淡入面板。我可以使淡入淡出正常工作,但是组合框的标签不会淡入淡出。我在按钮上遇到了同样的问题,发现它们的字体需要嵌入。没问题。我嵌入了所使用的字体,并且按钮的标签正确消失了。我对组合框尝试了类似的方法,但是它不会使选定的项目标签褪色。

到目前为止,这是我所做的:
在脚本中将字体的代码嵌入到我的MXML的顶部:

[Embed("assets/trebuc.ttf", fontName="TrebuchetMS")]
public var trebuchetMSFont:Class;

在我的init函数中

//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();