apache-flex 如何让组合框的标签淡入Flex

ikfrs5lh  于 2022-11-01  发布在  Apache
关注(0)|答案(5)|浏览(110)

我在Flex3的面板中有一个组合框。基本上我想使用ActionScript中的Fade效果来淡化面板。我可以让淡化正常工作,但是组合框的标签不会褪色。我在按钮上也遇到了同样的问题,发现它们的字体需要嵌入。没问题。我嵌入了我正在使用的字体,按钮的标签正确褪色。我“我已经尝试过类似的方法来处理组合框,但是它不会淡化选定项的标签。
以下是我目前所做的工作:在脚本中嵌入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”属性仅使下拉列表中的项目使用正确的字体。

zaq34kh6

zaq34kh61#

您可以经常使用来mx:Dissolve代替mx:Fade,它看起来几乎相同,而且不需要嵌入字体。

j8ag8udp

j8ag8udp2#

嗯,我不知道为什么你不这么做。下面是一个例子,我是怎么做到的:

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

希望这对你有帮助。

2ic8powd

2ic8powd3#

溶解的工作方式是淡入淡出一个纯色矩形,而不是淡入淡出实际的组件。这很好用,特别是当你想控制组件应该淡入淡出的颜色时。但是,有时你需要透明度,因此必须使用淡入淡出。有一个小技巧可以让淡入淡出对设备字体和嵌入字体都能很好地工作:使用没有模糊模糊过滤器。
基本上,当你设置一个位图滤镜时,播放器会在内部创建一个对象的位图副本,然后应用滤镜。如果模糊设置为不模糊,可以说,它仍然看起来很好,并且能够完美地淡入淡出。这打破了播放器的缩放功能,但因为文本现在是光栅化的。

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

h22fl7wq4#

谢谢您的帮助。遇到了完全相同的问题。诀窍在于嵌入您正在使用的字体的“粗体”版本。即使您的组合框中的字体没有设置为粗体...

igsr9ssn

igsr9ssn5#

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

相关问题