`

flex 之 Embed

    博客分类:
  • flex
阅读更多

 

Flex 软件中经常需要使用一些外部的资源,如图片、声音、SWF或字体,虽然你也可以在软件运行的时候引入和载入,但是也可能经常需要直接将这些资源编译(Compile)到软件中,也就是直接嵌入资源(Embedding Assets)。 Flex 中可以直接嵌入图片image,影片movie,MP3,和TrueType文字。

嵌入资源的利处:

1、比起在运行时访问资源,对嵌入资源的访问速度更加快速;

2、可以用简单的变量访问方式,在多个地方引用所嵌入的资源。这是变量就代表资源,提高写代码的效率;

嵌入资源的弊处:

1、增大了SWF文件的大小,因为是将资源直接包含;

2、由于SWF文件增大,将使得初始化的速度变慢;

3、当资源改变后,需要重新编译SWF文件;

 

例子1:一个简单的嵌入资源的例子:

<?xml version=”1.0”?>
<!--  embed \ButtonIcon.mxml -->
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>
             <mx:Button label=”Icon Button” icon=” @ Embed (source=’logo.gif’) "/>
</mx:Application>

以上粗体部分,使用了@ Embed ()指令,将logo.gif这个图片直接嵌入到程序中,作为Button按钮的Icon图标。

 

例子2:用变量引用嵌入的资源

<?xml version="1.0"?>
<!--  embed \ButtonIconClass.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
             <mx:Script>
                 <![CDATA[
                     [ Embed (source="logo.gif")]
                     [ Bindable ]
                     public var imgCls:Class;

                 ]]>
             </mx:Script> ADOBE  FLEX  3 BETA 2

             <mx:Button label="Icon Button 1" icon="{ imgCls }"/>
             <mx:Button label="Icon Button 2" icon="{ imgCls }"/>

以上粗体部分,表示将logo.gif图片嵌入,并让变量imgCls可以引用该资源。[ Bindable ]表示该变量imgCls是可以被数据绑定的。之后,就可以在多个地方引用该嵌入资源的变量(见红色粗体)。

 

另外也可以通过 Embed ()指令, 在样式表中嵌入资源 ,这通常是在设置UI组件的皮肤时候使用。如下代码:

<?xml version="1.0"?>
<!--  embed \ButtonIconCSS.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
            <mx:Style>  
                .myCustomButton {
             overSkin : Embed (source="overIconImage.gif");
             upSkin : Embed (source="upIconImage.gif");
             downSkin : Embed (source="downIconImage.gif");
                }
            </mx:Style>
            <mx:Button label="Icon Button Style Def" styleName="myCustomButton"/>
</mx:Application>

以上代码表示在按钮的常态(up)、鼠标悬停(over)、鼠标按下(down)的状态,使用不同的皮肤。 overSkin、 upSkin、 downSkin 是Button的对应状态下的皮肤属性。

可嵌入的资源文件格式:


嵌入资源的语法:
根据嵌入位置的不同,语法也各不同:
1、[ Embed (parameter1, paramater2, ...)] 元数据标签
           这主要在AS文件中,或MXML文件中的 <mx:Script>标签中使用。
2、@ Embed (parameter1, paramater2, ...) 指令
           这主要在MXML标签中使用。
3、 Embed (parameter1, paramater2, ...) 指令
           这主要在 <mx:Style> 样式表中使用。
根据情况的不同嵌入资源 Embed 的返回类型可以是Class或String。
对嵌入的图片资源进行9格缩放(9-slice scaling)
9格图就是把一个图片切分成9个格子,如图:
中间的5区为内容区,将正常缩放;1、3、7、9为角,不进行缩放;2、8将横向缩放;4、6将纵向缩放。
见代码:
<?xml version="1.0"?>
<!--  embed \Embed9slice.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
        width="1200" height="600"> 
        <mx:Script>
            <![CDATA[
                [ Embed (source="slice_9_grid.gif", 
                   scaleGridTop="25", scaleGridBottom="125", 
                    scaleGridLeft="25", scaleGridRight="125"
)]
                [ Bindable ]
                public var imgCls:Class;            
            ]]>
        </mx:Script>
    
        <mx:HBox>
            <mx:Image source="{imgCls}"/>
            <mx:Image source="{imgCls}" width="300" height="300"/>
            <mx:Image source="{imgCls}" width="450" height="450"/>
        </mx:HBox>
</mx:Application>
以上代码中,图片slice_9_grid.gif为30px * 130px大小。通过 scaleGridTop、scaleGridBottom、scaleGridLeft、scaleGridRight ,上下左右分别留出了5px的边。放大后的结果如图:
以上的9格子方法在制作图片为背景的UI控件皮肤中,是非常有用的。
  在 Flex 的很多组件,都有icon属性,在设计时对其设置后,在mxml代码里会产生如下代码:
        icon="@ Embed ('join.GIF')"
    而在某些时候,可能需要在mx script中动态改变icon属性,这个时候显示有些麻烦,比如设置一个Panel的icon属性,Panel.icon=null是可以正确去掉Panel的icon图片,而设置icon图片时,可以使用下面的办法:
    先加下面的代码,一个mxml文件里可以多个<mx:Script>标签。
    <mx:Script>
        <![CDATA[
            [ Embed (source="join.GIF")]
            [ Bindable ]
            public var imgCls:Class;
        ]]>
    </mx:Script>
    然后就可以这样来设置Panel的icon属性了。
    Panel.icon=imgCls;
在按钮中嵌入icon图标有两种方法。第一种是在 Flex 应用中创建一个变量,利用[ Bindable ]和[ Embed ] ,在代码中以参数形式传入制定图标(icon)的路径,然后利用类似icon="{Icon}"的代码嵌入到按钮中。第二种是利用@ Embed ()和参数中指定图标的路径。

分享到:
评论

相关推荐

    components-flex-embed, 内嵌比嵌入的组件 CSS.zip

    components-flex-embed, 内嵌比嵌入的组件 CSS 适合 CSS components-flex-embed 用于响应特性的CSS嵌入。 Includes 3: 1,2:,16: 9 和 4: 3 长宽比包含修饰符类。阅读更多关于css原则设计的css原则的文章。安装npm:

    flex嵌入html的容器

    3. 使用`&lt;iframe&gt;`结合`&lt;object&gt;`或`&lt;embed&gt;`嵌入Flex IFrameDemo可能利用`&lt;iframe&gt;`来加载一个包含`&lt;object&gt;`或`&lt;embed&gt;`标签的HTML页面。这样做的好处是可以使Flex应用与主页面隔离,避免样式冲突和JavaScript...

    flex 竖排Menu

    例如,`菜单项" icon="@Embed('path/to/icon.png')"/&gt;`,这里的@Embed用于内联资源,将图标文件嵌入到应用中。 4. **事件处理**:为每个MenuItem添加点击事件监听器,以便在用户选择菜单项时执行相应的功能。 5. **...

    flex (eclipse)开发配置手册

    《Flex(Eclipse)开发配置手册》是一份详细介绍如何在Eclipse环境中进行Flex应用程序开发的指导文档。Flex是一种用于创建富互联网应用(RIA)的技术,它基于ActionScript和MXML,由Adobe公司提供。这份手册将帮助...

    flex实现旋转效果

    在本文中,我们将深入探讨如何使用Flex来实现一个图片旋转效果,这在产品展示或交互式界面设计中非常常见。Flex是一种强大的、基于XML的框架,用于构建富互联网应用程序(RIA),尤其适用于创建动态、响应式的用户...

    应用flash制作flex样式

    使用`embed`关键字将SWF文件嵌入到CSS中,然后将其作为组件的背景图像或图形资源。 5. **调整样式属性**:通过CSS,可以设置组件的尺寸、位置、颜色和其他视觉属性。还可以定义状态(如鼠标悬停、按下等),以便在...

    RadioButton Embed In The DataGrid Of Flex

    在Flex开发中,有时我们需要在DataGrid组件中嵌入单选按钮(RadioButton)来实现用户只能选择一行数据的功能。在给定的标题和描述中,我们看到如何在Flex的DataGrid中实现这一功能。以下是对这个话题的详细解释: ...

    flex加载flashpaper示例

    在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player的开源框架,主要用于构建富互联网应用程序(RIA)。FlashPaper则是Adobe公司推出的一款工具,它能够将文档转换为交互式的Flash格式,使得用户可以在Web上...

    Flex中背景平铺的做法

    在Adobe Flex中,开发者经常需要为用户界面添加丰富的视觉效果,其中背景图像是增强UI美观度的重要手段之一。对于Flex 3而言,若要实现背景图像的平铺效果,则需要自定义一个类来完成这一功能。而在Flex 4中,由于...

    flex编译优化方法

    8. **模块化管理样式和资源**:避免在样式中过度使用`embed`,这会导致编译缓慢。可以考虑将资源打包为SWF模块,单独编译和加载。 9. **优化Eclipse配置**:检查并调整Eclipse的Flex相关设置,例如禁用某些不必要的...

    轻松去flex水印 附带使用说明

    这通常是关于metadata的部分,例如`[Embed]`或`[SWF]`标签中的注释。 3. 修改水印信息:找到相关的代码后,删除或替换掉水印文本。如果水印是硬编码在ActionScript类中的,你需要定位到相应的类文件并做相应修改。 ...

    flex加载html页面

    &lt;mx:WebBrowser id="htmlViewer" source="@Embed('path/to/your/html/file.html')"/&gt; ``` 或者动态设置源: ```actionscript htmlViewer.source = "http://example.com"; ``` 2. **`flash.display.Loader`类...

    FLEX 背景图片设置

    在本文中,我们将深入探讨如何在FLEX应用程序中设置背景图片,这是一项非常实用的技巧,可以帮助你提升应用的视觉效果。FLEX是一种基于ActionScript 3(AS3)的开发框架,用于创建富互联网应用程序(RIA)。背景图片...

    Flex AcrionScript 和 JavaScript 通讯

    - HTML中使用`&lt;object&gt;`和`&lt;embed&gt;`标签来嵌入Flash内容。`classid`和`codebase`属性指定了Flash Player的识别信息,`movie`属性指定SWF文件的位置,`allowScriptAccess`参数设置为`sameDomain`,允许JavaScript在...

    FlexModule_j2ee.zip

    1. **SWF对象嵌入**:在JSP页面中,会有一个HTML的`&lt;object&gt;`或`&lt;embed&gt;`标签,用来嵌入生成的Flex SWF(Shockwave Flash)文件。这是将Flex应用展示在Web浏览器中的标准方法。 2. **Flex编译输出**:023ec83e...

    Flex创建菜单栏

    文件" icon="@Embed('path/to/icon.png')"&gt; &lt;event name="click"&gt;handleFileItemClick(event); ``` 在ActionScript代码中,`handleFileItemClick`函数会处理点击事件: ```actionscript private function ...

    Flex控制SWF播放

    &lt;mx:MovieClip id="swfPlayer" source="@Embed('path/to/your.swf')"/&gt; ``` 2. **访问SWF的ActionScript API**: 一旦SWF文件被嵌入,我们可以通过引用`swfPlayer`的实例来访问其AS3 API。例如,要调用SWF中的...

    flex与js交互 关于ExternalInterface使用的小例子

    跨域安全可以通过在Flash内容的SWF标签中添加`allowScriptAccess`属性来解决,如`&lt;embed allowScriptAccess="always" ...&gt;`。 - **浏览器兼容性**:并非所有浏览器都支持Flash Player,因此在设计交互时应考虑不...

    flex_gifplayer使用实例

    &lt;mx:GifPlayer id="gifPlayer" source="@Embed('path_to_your_gif_file.gif')" /&gt; ``` 这里的`source`属性指定了要加载的GIF文件路径。 3. **控制播放**:你可以通过AS3代码来控制GifPlayer的行为,例如开始、...

    Flex 图片放大缩小

    在Flex开发中,图片放大缩小功能是一个常见的交互需求,它能提供用户友好的查看体验,尤其是在展示细节丰富的图像时。Flex是一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在这里,...

Global site tag (gtag.js) - Google Analytics