<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    Loading style sheets at run time (from adobe)

    Loading style sheets at run time

    You can load style sheets at run time by using the StyleManager. These style sheets take the form of SWF files that are dynamically loaded while your Flex application runs.

    By loading style sheets at run time, you can load images (for graphical skins), fonts, type and class selectors, and programmatic skins into your Flex application without embedding them at compile time. This lets skins and fonts be partitioned into separate SWF files, away from the main application. As a result, the application's SWF file size is smaller, which reduces the initial download time. However, the first time a run-time style sheet is used, it takes longer for the styles and skins to be applied because Flex must download the necessary CSS-based SWF file.

    Loading style sheets at run time is a three-step process:

    1. Write a CSS file for your application.
    2. Compile the CSS file in a SWF file by using the mxmlc compiler.
    3. Call the StyleManager.loadStyleDeclarations() method in your Flex application. This method loads the CSS-based SWF file into your application. When this method executes, Flex loads the new CSSStyleDeclarations into the StyleManager.

    You can load multiple style sheets that define the same styles. After you set a style, subsequent style sheets can overwrite previous ones if they have common selectors. Styles loaded with run-time style sheets do not completely replace compile-time styles, however. They just override them until the run-time style sheets are unloaded. At that point, Flex reverts to the compile-time style settings. Compile-time style settings include any default styles sheets that were loaded at compile time, theme files loaded by using the theme compiler option, and styles set by using the <mx:Style> block inside an MXML file.

    Subtopics

    Creating a run-time style sheet
    Compiling the CSS-based SWF file
    Loading style sheets at run time
    Unloading style sheets at run time
    Using run-time style sheets in custom components
    Using theme SWC files as run-time style sheets

    Creating a run-time style sheet

    To load style sheets at run time, you must first create a style sheet that is compiled into a SWF file. A run-time style sheet is like any other style sheet. It can be a simple style sheet that sets basic style properties, as the following example shows:

    /* styles/runtime/assets/BasicStyles.css */
    Button {
    fontSize:    24;
    color: #FF9933;
    }
    Label {
    fontSize:    24;
    color: #FF9933;
    }
    

    Or the style sheet can be a complex style sheet that embeds programmatic and graphical skins, fonts, and other style properties, and uses type and class selectors, as the following example shows:

    /* styles/runtime/assets/ComplexStyles.css */
    Application {
    backgroundImage : "assets/greenBackground.gif";
    theme-color: #9DBAEB;
    }
    Button {
    fontFamily: Tahoma;
    color: #000000;
    fontSize: 11;
    fontWeight: normal;
    text-roll-over-color: #000000;
    upSkin: Embed(source="../../../assets/orb_up_skin.gif");
    overSkin: Embed(source="../../../assets/orb_over_skin.gif");
    downSkin: Embed(source="../../../assets/orb_down_skin.gif");
    }
    .noMargins {
    margin-right: 0;
    margin-left: 0;
    margin-top: 0;
    margin-bottom: 0;
    horizontal-gap: 0;
    vertical-gap: 0;
    }
    

    You cannot load an uncompiled CSS file into your Flex application at run time. You must compile it into a SWF file before loading it.

    Compiling the CSS-based SWF file

    Before you can load a style sheet at run time, you must compile the style sheet into a SWF file.

    To compile the CSS file into a SWF file, you use the mxmlc command-line compiler. The default result of the compilation is a SWF file with the same name as the CSS file, but with the .swf extension. The following example produces the BasicStyles.swf file:

    > mxmlc /skins/runtime/BasicStyles.css
    

    The style sheet that you compile into a SWF file must use a .css filename extension.

    When you compile your Flex application, the compiler does not perform any compile-time link checking against the CSS-based SWF files used by the application. This means that you are not required to create the SWF file before you compile your main application.

    Loading style sheets at run time

    You load a CSS-based SWF file at run time by using the StyleManager's loadStyleDeclarations() method. To use this method, you must import the mx.core.StyleManager class.

    The following example loads a style sheet when you click the button:

    <?xml version="1.0"?>
    <!-- styles/runtime/BasicApp.mxml -->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
    import mx.styles.StyleManager;
    public function applyRuntimeStyleSheet():void {
    StyleManager.loadStyleDeclarations("assets/BasicStyles.swf")
    }
    ]]>
    </mx:Script>
    <mx:Label text="Click the button to load a new CSS-based SWF file"/>
    <mx:Button id="b1" label="Click Me" click="applyRuntimeStyleSheet()"/>
    </mx:Application>
    

    The first parameter of the loadStyleDeclarations() method is the location of the style sheet to load. The location can be local or remote.

    The following example shows loading a local and a remote SWF file:

    // Load a locally-accessible style sheet:
    StyleManager.loadStyleDeclarations("assets/LocalStyles.swf");
    // Load a remote style sheet:
    StyleManager.loadStyleDeclarations("http://www.domain2.com/styles/RemoteStyles.swf", true, true);
    

    If the style sheet is local (from the same domain as the loading application), you can load it without any additional settings. If the location of the style sheet is remote (in any domain that is not an exact match of the loading application's domain), you must set the third parameter of the loadStyleDeclarations() method, trustContent, to true. Loading remote style sheets does not require a crossdomain.xml file that gives the loading application permission to load the SWF file.

    Also, to use remote style sheets, you must compile the loading application with network access (have the use-network compiler property set to true, the default). If you compile and run the application on a local file system, you might not be able to load a remotely accessible SWF file.

    The loadStyleDeclarations() method returns an instance of the IEventDispatcher class. You can use this object to trigger events based on the success of the style sheet's loading. You have access to the StyleEvent.PROGRESS, StyleEvent.COMPLETE, and StyleEvent.ERROR events of the loading process.

    The following application calls a method when the style sheet finishes loading:

    <?xml version="1.0"?>
    <!-- styles/runtime/StylesEventApp.mxml -->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
    <mx:Script>
    <![CDATA[
    import mx.styles.StyleManager;
    import mx.events.StyleEvent;
    public function init():void {
    var myEvent:IEventDispatcher =
    StyleManager.loadStyleDeclarations("assets/ACBStyles.swf");
    myEvent.addEventListener(StyleEvent.COMPLETE, getImage);
    }
    private function getImage(event:StyleEvent):void {
    map1.source = acb.getStyle("dottedMap");
    }
    ]]>
    </mx:Script>
    <mx:ApplicationControlBar id="acb" width="100%" styleName="homeMap">
    <mx:Image id="map1"/>
    <mx:Button label="Submit"/>
    </mx:ApplicationControlBar>
    </mx:Application>
    

    The second parameter of the loadStyleDeclarations() method is update. Set the update parameter to true to force an immediate update of the styles. Set it to false to avoid an immediate update of the styles in the application. The styles are updated the next time you call this method or the unloadStyleDeclarations() method with the update property set to true.

    Each time you call the loadStyleDeclarations() method with the update parameter set to true, Adobe Flash Player reapplies all styles to the display list, which can degrade performance. If you load multiple CSS-based SWF files at the same time, you should set the update parameter to false for all but the last call to this method. As a result, Flash Player only applies the styles once for all new style SWF files rather than once for each new style SWF.

    The following example loads three style SWF files, but does not apply them until the third one is loaded:

    <?xml version="1.0"?>
    <!-- styles/runtime/DelayUpdates.mxml -->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
    <mx:Script>
    <![CDATA[
    import mx.styles.StyleManager;
    import mx.events.StyleEvent;
    public function init():void {
    StyleManager.loadStyleDeclarations(
    "assets/ButtonStyles.swf", false);
    var myEvent:IEventDispatcher =
    StyleManager.loadStyleDeclarations(
    "assets/LabelStyles.swf", false);
    myEvent.addEventListener(StyleEvent.COMPLETE, doUpdate);
    }
    public function doUpdate(event:StyleEvent):void {
    StyleManager.loadStyleDeclarations(
    "assets/ACBStyles.swf", true);
    }
    ]]>
    </mx:Script>
    <mx:Label text="This is a label"/>
    <mx:ApplicationControlBar id="acb" width="100%">
    <mx:Button label="Submit"/>
    </mx:ApplicationControlBar>
    </mx:Application>
    

    Unloading style sheets at run time

    You can unload a style sheet that you loaded at run time. You do this by using the StyleManager's unloadStyleDeclarations() method. The result of this method is that all style properties set by the specified style SWF files are returned to their defaults.

    The following example loads and unloads a style SWF when you toggle the check box:

    <?xml version="1.0"?>
    <!-- styles/runtime/UnloadStyleSheets.mxml -->
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
    import mx.styles.StyleManager;
    public function toggleStyleSheet():void {
    if (cb1.selected == true) {
    StyleManager.loadStyleDeclarations(
    "assets/ButtonStyles.swf", true, false)
    StyleManager.loadStyleDeclarations(
    "assets/LabelStyles.swf", true, false)
    } else {
    StyleManager.unloadStyleDeclarations(
    "assets/ButtonStyles.swf", true);
    StyleManager.unloadStyleDeclarations(
    "assets/LabelStyles.swf", true);
    }
    }
    ]]>
    </mx:Script>
    <mx:Button id="b1" label="Click Me"/>
    <mx:Label id="l1" text="Click the button"/>
    <mx:CheckBox id="cb1"
    label="Load style sheet"
    click="toggleStyleSheet()"
    selected="false"
    />
    </mx:Application>
    

    Using run-time style sheets in custom components

    You can use run-time style sheets in custom components. To do this, you generally call the loadStyleDeclaration() method after the component is initialized. If the style sheet contains class selectors, you then apply them by setting the styleName property.

    The following example defines style properties and skins in a class selector named specialStyle:

    /* styles/runtime/assets/CustomComponentStyles.css */
    .specialStyle {
    fontSize:    24;
    color: #FF9933;
    upSkin: Embed(source="SubmitButtonSkins.swf", symbol="MyUpSkin");
    overSkin: Embed(source="SubmitButtonSkins.swf", symbol="MyOverSkin");
    downSkin: Embed(source="SubmitButtonSkins.swf", symbol="MyDownSkin");
    }
    

    The following example custom component loads this style sheet and applies the specialStyle class selector to itself during initialization:

    // styles/runtime/MyButton.as -->
    package {
    import mx.controls.Button;
    import mx.events.*;
    import mx.styles.StyleManager;
    public class MyButton extends Button {
    public function MyButton() {
    addEventListener(FlexEvent.INITIALIZE,
    initializeHandler);
    }
    // Gets called when the component has been initialized
    private function initializeHandler(event:FlexEvent):void {
    StyleManager.loadStyleDeclarations(
    "assets/CustomComponentStyles.swf");
    this.styleName = "specialStyle";
    }
    }
    }
    

    Using theme SWC files as run-time style sheets

    If you have an existing theme SWC file, you can use it as a run-time style sheet. To do this, you must extract the CSS file from the theme SWC file. You then compile the style SWF file by passing the remaining SWC file as a library.

    The following steps show this process using the command line:

    1. Extract the CSS file from the SWC file using PKZip or similar archiving utility; for example:
      $ unzip haloclassic.swc defaults.css
          
    2. (Optional) Rename the CSS file to a meaningful name. This is the name of your style SWF file. The following example renames the defaults.css file to haloclassic.css:
      $ mv defaults.css haloclassic.css
          
    3. Compile the style SWF file. Add the theme SWC file to the style SWF file by using the include-libraries option, as the following example shows:
      $ mxmlc -include-libraries=haloclassic.swc haloclassic.css
          

    If you have multiple CSS files inside a theme SWC file, you must extract all of them before compiling the style SWF file.

    posted on 2008-09-19 14:49 gembin 閱讀(532) 評論(0)  編輯  收藏 所屬分類: Flex

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 亚洲Av无码国产一区二区| 亚洲熟女综合色一区二区三区| 牛牛在线精品观看免费正| 中文字幕在线日亚洲9| 我们的2018在线观看免费高清| 亚洲综合免费视频| 无码毛片一区二区三区视频免费播放 | 一本色道久久88亚洲精品综合| 4hu四虎最新免费地址| 亚洲AV无码一区二三区 | 亚洲电影中文字幕| 久久精品成人免费观看| 777亚洲精品乱码久久久久久| 亚欧在线精品免费观看一区| 久久精品国产亚洲AV久| 国产免费牲交视频免费播放 | 人妻无码中文字幕免费视频蜜桃| 免费国产在线观看不卡| japanese色国产在线看免费| 亚洲产国偷V产偷V自拍色戒| 天天综合亚洲色在线精品| 一个人在线观看视频免费| 亚洲人成电影在在线观看网色| g0g0人体全免费高清大胆视频| 亚洲va中文字幕无码久久| 一级一级一级毛片免费毛片| 亚洲国产另类久久久精品小说| 啦啦啦完整版免费视频在线观看 | 亚洲中文无码mv| 亚洲日韩国产精品乱| 爱丫爱丫影院在线观看免费| 免费一级e一片在线播放| 两个人看的www免费视频中文| 久久久久亚洲AV成人网人人软件| 高清一区二区三区免费视频| 亚洲国产成人久久99精品| 亚洲视频免费在线看| 国产亚洲精品第一综合| 亚洲av无码乱码在线观看野外| 日韩精品在线免费观看| 亚洲七久久之综合七久久|