2008-08-20 4 views
1

Ich habe eine Combo-Box, die in einem Panel in Flex 3 sitzt. Grundsätzlich möchte ich das Panel mit einem Fade-Effekt in ActionScript verblassen. Ich kann die Fade gut funktionieren lassen, aber das Label der Combo-Box verblasst nicht. Ich hatte das gleiche Problem mit Schaltflächen und festgestellt, dass ihre Schriften eingebettet werden mussten. Kein Problem. Ich habe die von mir verwendete Schriftart eingebettet und die Beschriftungen der Schaltflächen korrekt eingeblendet. Ich habe einen ähnlichen Ansatz in der Combo-Box versucht, aber die ausgewählte Artikelbezeichnung wird nicht ausgeblendet. HierWie bekomme ich Label Combobox zum Einblenden Flex

ist das, was ich bisher getan: Embed-Code für die Schriftart an der Spitze meiner MXML in Skript:

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

In meiner Funktion init

//register the font. 
Font.registerFont(trebuchetMSFont); 

die Combobox des 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> 

Und ein Stil, den ich auf der Combo-Box die Schriften angewendet werden, schrieb:

.FilterDropdown 
{ 
    embedFonts: true; 
    fontFamily: TrebuchetMS; 
    fontWeight: normal; 
    fontSize: 12; 
} 

Der Grund, warum ich stattdessen einen Stil zu schreiben hatte, war es in der „Fontfamily“ -Attribut des Vergebens, dass der Stil den ganzen Text auf der Combo-Box die richtige Schriftart gemacht, wo die „Fontfamily“ Attribut nur das gemacht Elemente in dem Dropdown verwenden die richtige Schriftart.

Antwort

2

Hmm, ich bin mir nicht sicher, warum das nicht für Sie funktioniert. Hier ist ein Beispiel, wie ich es zur Arbeit gebracht habe:

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

Hoffe, dass dies Ihnen hilft.

3

Sie können oft < mx verwenden: Man löst > statt < mx: Fade > es fast identisch aussieht und erfordert keine eingebetteten Schriften.

0

Danke für Ihre Hilfe. Hatte genau das gleiche Problem. Der Trick liegt in der Einbettung der "fett" Version der Schriftart, die Sie verwenden. Auch wenn die Schriftart in Ihrer ComboBox nicht auf Fett eingestellt ist ...

1

Auflösen funktioniert, indem ein Vollton-Rechteck ein- und ausgeblendet wird, anstatt die tatsächliche Komponente zu verblassen. Dies funktioniert gut, besonders wenn Sie die Farbe steuern möchten, in der die Komponente verblassen soll. Manchmal benötigen Sie jedoch Transparenz und müssen daher Fade verwenden. Es gibt einen kleinen Trick, mit dem Fade sowohl mit Geräteschriftarten als auch mit eingebetteten Schriftarten sauber arbeiten kann: Verwende einen Unschärfefilter ohne Unschärfe.

Wenn Sie einen Bitmap-Filter festlegen, erstellt der Player intern eine Bitmap-Kopie Ihres Objekts, auf die es dann den Filter anwendet. Wenn die Unschärfe so eingestellt ist, dass sie nicht verwischt, sieht sie immer noch gut aus und kann perfekt verblassen. Dies unterbricht jedoch die Zoom-Funktion des Players, da der Text nun gerastert ist.

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

Btw, hat jemand in der Welt tatsächlich die Zoom-Funktion der ein Feature Flash Player in Betracht ziehen? Ernst. –

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