2008-10-15 10 views
6

wiem, że można zastosować CSS w celu obiektach typu Flex pomocą StyleManager:
http://livedocs.adobe.com/flex/3/html/help.html?content=styles_07.htmlW jaki sposób dynamicznie ładujesz plik CSS do aplikacji Flex?

Można również załadować skompilowane plików CSS (SWF) Dynamicznie
http://livedocs.adobe.com/flex/3/html/help.html?content=styles_10.html

jednak Dynamicznie tworzę swoje pliki CSS za pomocą webowego interfejsu GUI i skryptu po stronie serwera. Jeśli CSS zostanie zmieniony, skrypt będzie musiał również skompilować CSS do pliku SWF (który nie jest realną opcją). Czy jest jakiś sposób obejścia tego?

Odpowiedz

0

Aplikacja CSS w środowisku Flex jest obsługiwana po stronie serwera podczas kompilacji, a nie po stronie klienta w czasie wykonywania.

Chciałbym zobaczyć dwie opcje to dla ciebie (nie jestem pewien, w jaki sposób praktyczny albo są):

  1. użyć skryptu po stronie serwera, aby skompilować CSS jako SWF następnie załadować je dynamicznie.
  2. Przerób arkusz stylów CSS i użyj funkcji setStyle w flex, aby zastosować style. Podobnym przykładem tego podejścia jest Flex Style Explorer, gdzie można sprawdzić source.

Powodzenia.

3

W this comment do kwestii związanej z tym w bug tracker Adobe T. Busser opisuje, co może być dobrym rozwiązaniem dla Ciebie:

„Utworzyłem małą klasę, która będzie „parse” plik CSS czytać ze związkiem HTTPService obiekt. To trwa od siebie łańcuch , który jest zwracany przez obiekt HTTPService, rozbicie go na selektorów i utworzyć nowy obiekt CSSStyleDeclaration dla każdego selektor, który został znaleziony. Gdy wszystko t Właściwości są przypisane do obiektu CSSStyleDeclaration , do którego dodano styl StyleManager: . Nie wykonuje on żadnej kontroli, należy wykonać , czy plik CSS jest dobrze sformułowany, ale będzie to wystarczające 99% czasu. Rzeczy takie jak @font, Embed() i ClassReference() prawie nie będą używane przez moich klientów. Oni potrzebują zdolność do zmiany kolorów i rzeczy tak więc można je łatwo motyw aplikacja Flex ich dom stylu.”

Można by też spróbować skontaktować się z tą osobą do ich rozwiązania lub alternatywnie .. może użyć kodu z this as3csslib project jako podstawa do napisania czegoś podobnego, co opisujesz

2

można również wdrożyć dynamiczne stylów w Flex jak to tutaj znalazłem ten artykuł: http://askmeflash.com/article_m.php?p=article&id=6

+1

Ten pracował dobrze dla mnie - zamiast korzystania parseCSS skończyło się podczas analizowania ciągu siebie i ustawienie każdej nieruchomości using: StyleManager.getStyleDeclaration ("Component") .setStyle ("właściwość", wartość); Coś w stylu hack, ale no cóż ... – onekidney

2

Edytuj: To rozwiązanie nie działa.Wszystkie selektory pobrane z analizatora składni są konwertowane na małe litery. To może działać dla twojej aplikacji, ale prawdopodobnie nie będzie ...

Pozostawiam tu odpowiedź, ponieważ może pomóc niektórym osobom szukającym rozwiązania i ostrzegać innych o ograniczeniach tej metody.


Zobacz moje pytanie: „Looking for CSS parser written in AS3” dla pełnej dyskusji ale znalazłem parser CSS ukryte wewnątrz standardowych bibliotek. Oto w jaki sposób można go używać:

public function extractFromStyleSheet(css:String):void { 

    // Create a StyleSheet Object 
    var styleSheet:StyleSheet = new StyleSheet(); 
    styleSheet.parseCSS(css); 

    // Iterate through the selector objects 
    var selectorNames:Array = styleSheet.styleNames; 
    for(var i:int=0; i<selectorNames.length; i++){ 

     // Do something with each selector 
     trace("Selector: "+selelectorNames[i]; 

     var properties:Object = styleSheet.getStyle(selectorNames[i]); 
     for (var property:String in properties){ 

      // Do something with each property in the selector 
      trace("\t"+property+" -> "+properties[property]+"\n"); 
     } 
    } 
} 

Można wtedy zastosować style, używając:

cssStyle = new CSSStyleDeclaration(); 
cssStyle.setStyle("color", "<valid color>); 
FlexGlobals.topLevelApplication.styleManager.setStyleDeclaration("Button", cssStyle, true); 
+0

Dlaczego zamieszczasz odpowiedzi na pytanie, które ma ponad 2 lata? –

+1

@Rob Znalazłem to pytanie, wyszukując w Google i uznałem, że odpowiedź była niekompletna. Moja odpowiedź kończy pytanie i będzie pomocna dla osób, które znalazły pytanie (tak jak ja) od Google. – sixtyfootersdude

Powiązane problemy