1

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」属性がドロップダウンの項目のみを使用するのに、スタイルがコンボボックスのすべてのテキストを正しいフォントにしたためです。正しいフォント。

4

5 に答える 5

3

多くの場合、<mx:Fade> の代わりに <mx:Dissolve> を使用できます。見た目はほとんど同じで、埋め込みフォントは必要ありません。

于 2008-09-17T13:26:28.123 に答える
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>

これがお役に立てば幸いです。

于 2008-08-20T18:05:41.057 に答える
1

ディゾルブは、実際のコンポーネントをフェードするのではなく、単色の長方形をフェード インおよびフェード アウトすることによって機能します。これは、特にコンポーネントがフェードする色を制御したい場合にうまく機能します。ただし、透過性が必要な場合があるため、Fade を使用する必要があります。Fade をデバイス フォントと埋め込みフォントの両方で適切に動作させるには、ちょっとしたコツがあります。ぼかしなしのぼかしフィルターを使用します。

基本的に、ビットマップ フィルターを設定すると、プレイヤーは内部的にオブジェクトのビットマップ コピーを作成し、フィルターを適用します。ぼかしをぼかしない設定にしても、いわば見栄えがよく、完全にきれいにフェードできます。ただし、テキストがラスタライズされるため、プレーヤーのズーム機能が壊れます。

<mx:Label id="percentage" text="{progress} %" truncateToFit="false">
    <mx:filters>
        <mx:BlurFilter blurX="0" blurY="0" />
    </mx:filters>
</mx:Label>
于 2009-04-14T23:06:05.617 に答える
0
var htm = $('#comboboxId').find('option:selected').html();
于 2010-02-22T13:17:29.297 に答える
0

ご協力いただきありがとうございます。まったく同じ問題がありました。秘訣は、使用しているフォントの「太字」バージョンを埋め込むことです。ComboBox のフォントが Bold に設定されていなくても ...

于 2009-01-23T08:28:35.970 に答える