Flex中的资源管理

【转】 http://www.adobe.com/cn/devnet/flex/quickstart/embedding_assets/

Flex 快速入门: 入门

目录


嵌入应用程序资源

可以在 Adobe® Flex™ 应用程序中嵌入各种类型的资源。 嵌入的资源被编译到 Flex 应用程序的 SWF 文件中。 它们不是在运行时加载的, 您并非必须使用您的应用程序部署原始资源文件。

提示: 嵌入资源的另一种方法是在运行时加载它们。 在运行时加载的资源必须使用您的应用程序进行部署, 因为它们没有被编译到您的应用程序中。 这具有保持 Flex 应用程序的文件大小更小和缩短其初始加载时间的优点。

可以嵌入具有 PNG、JPEG 和 GIF 文件格式的图像, SWF 文件, 具有 MP3 文件格式的声音文件, SVG 文件和字体。 下列主题描述如何嵌入这些资源:

嵌入图像 (多个实例)

可以在 Flex 应用程序中嵌入具有 PNG、JPEG 或 GIF 文件格式的图像并创建它的一个或多个实例。

此示例使用 [Embed] 元数据标签在您的应用程序中嵌入图像并将它与可绑定的 ActionScript 类相关联。 接着它将 Image 控件的 source 属性绑定到 Logo 类。 可以将 Logo 类绑定到采用某个图像的任何组件属性, 比如 Button 控件的 icon 属性。

示例
<?xml version="1.0" encoding="utf-8"?>







<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    viewSourceURL="src/EmbeddingImages/index.html





"
    layout="horizontal





" width="350





" height="250





"
>






    
    <mx:Script>







        <!





[





CDATA[






            [





Embed(





source=





"assets/logo.png"





)]






            [











]







            public





 var





 Logo:





Class;            
        ]]





>






    </mx:Script>







    <mx:Image





 id="myLogo





" source="{





Logo}





"/>







    <mx:Image





 id="myLogo2





" source="{





Logo}





"/>







</mx:Application>





结果
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入图像 (单一实例)

可以使用线上 @Embed 指令在 Flex 应用程序中嵌入只希望显示一次的图像。

此示例将一个图像组件添加到一个应用程序中并使用其 source 属性中的 @Embed 指令。 若要在另一个 Image 控件中使用这一相同的图像, 则还必须将它嵌入到该组件中。 如果希望显示嵌入的图像的多个实例, 请使用 [Embed] 元数据标签

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    viewSourceURL="src/EmbeddingAnImage/index.html





"
    width="200





" height="240





"

>






    <mx:Image





 id="myLogo





" source="@Embed('assets/logo.png')





"/>







</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入使用 scale-9 伸缩的图像

您可以将某个图像文件嵌入到您的 Flex 应用程序并以类似组件的方式智能地缩放它。 通过使用 scale-9 功能, 您的图像的四个角根本没有缩放, 水平边框仅在水平方向上缩放, 而垂直边框仅在垂直方向上缩放。 例如, 这对于以下情况很有用: 创建使用圆角的框, 或在您希望在缩放组件时保持边框清晰的位置进行组件样式调整。

此示例使用 Embed 元数据标签的 scaleGridTopscaleGridBottomscaleGridLeftscaleGridRight 网格线位置属性来创建您的 scale-9 网格。

提示: 获得网格线位置的值的一种比较容易的方法是将指南与 Adobe® Photoshop® 中的 Rectangular Marquee 工具和 Info 选项板一起使用。

Photoshop 边框测量

提示: 旋转嵌入的 scale-9 图像的实例会关闭该图像的 scale-9 以在将来进行任意大小转换。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    viewSourceURL="src/EmbeddingImagesScale9/index.html





"
    layout="vertical





" width="400





" height="480





"


>







    <mx:Script>






        <!





[





CDATA[






            [





Embed(






                source=





"assets/fancy_border.png"





, 
                scaleGridTop=





"55"





, scaleGridBottom=





"137"





, 
                scaleGridLeft=





"57"





, scaleGridRight=





"266"







            )]






            
            [











]






            public





 var





 FancyBorderImage:





Class;
        ]]





>







    </mx:Script>







    <mx:Image





 source="{





FancyBorderImage}





" width="146





" height="82





"/>







    <mx:Image





 source="{





FancyBorderImage}





" width="266





" height="150





"/>






    <mx:Image





 source="{





FancyBorderImage}





" width="325





" height="183





"/>







</mx:Application>





结果
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

使用 CSS 为外观嵌入图像

您可以在 Flex 应用程序中嵌入图像并将它用于设置组件的外观。

您可以定义一个 CSS 类型选择器为给出类型的所有组件设置外观。 在此示例中, 您为 Button 控件创建了一个类型选择器。 类型选择器通过使用 Embed 指定这些图像用作您的组件的外观属性。 您还可以定义一个类选择器来创建可作为样式应用到特定组件的自定义 CSS 类。

提示: 类选择器创建可用来设置单独的组件的样式的已命名样式类, 方法是通过使用 styleName 属性将类选择器分配给该组件。 类型选择器为给出类型的所有组件设置样式, 如下面的示例所示。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    viewSourceURL="src/EmbeddingImagesCSS/index.html





"
    layout="horizontal





" width="270





" height="100





"
    horizontalAlign="center





" verticalAlign="middle





" 


>







    <mx:Style>






        Button 
        





{






            upSkin





:





 Embed(





"assets/box_closed.png"





)





;







            overSkin





:





 Embed(





"assets/box.png"





)





;






            downSkin





:





 Embed(





"assets/box_new.png"





)





;







        }






    </mx:Style>






    
    <mx:Button





/>






    
    <mx:Text





 text="Roll over and click the box!





"/>







</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入 SWF 文件

嵌入 SWF 文件与嵌入图像几乎是相同的。 差别在于您可以将嵌入的 SWF 文件的实例当作 MovieClip 类的实例处理。 (它们实际上是 MovieClipAsset 类的子类, MovieClipAsset 类是 MovieClip 类的子类。)

注意: 您无法直接访问嵌入的 SWF 文件的属性或方法。 但是, 您可以使用 LocalConnection 以允许它们进行通信。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
     viewSourceURL="src/EmbeddingSwfFiles/index.html





"
    layout="horizontal





" width="290





" height="290





"
    horizontalAlign="center





" verticalAlign="middle





"
 >







    <mx:Script>






    <!





[





CDATA[






            [





Embed(





source=





"assets/hourglass.swf"





)]







            [











]






            public





 var





 Hourglass:





Class;            
        ]]





>






    </mx:Script>







    <mx:Image





 id="hourglass





" source="{





Hourglass}





"/>






</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入 SWF 库资源

您可以在应用程序中嵌入来自现有 SWF 库中的特定符号。 Flash 定义三种类型的符号: Button、MovieClip 和 Graphic。 您可以在 Flex 应用程序中嵌入 Button 和 MovieClip 符号, 但您不能嵌入 Graphic 符号, 因为无法为 ActionScript 导出 Graphic 符号。

此示例使用 [Embed] 元数据标签的 source 属性来指定包含您的库的 SWF 文件, 并使用 [Embed] 元数据标签的 symbol 属性来指定您要在该库中嵌入的符号的链接 ID。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    viewSourceURL="src/EmbeddingSwfLibraryAssets/index.html





"
    layout="horizontal





" width="450





" height="240





"
    horizontalAlign="center





" verticalAlign="bottom





"     


>






  
    <mx:Script>






    <!





[





CDATA[






            [





Embed(





source=





"assets/library.swf"





, symbol=





"BadApple"





)]







            [











]






            public





 var





 BadApple:





Class;
            
            [





Embed(





source=





"assets/library.swf"





, symbol=





"Pumpkin"





)]







            [











]






            public





 var





 Pumpkin:





Class;
                        
        ]]





>






    </mx:Script>







    <mx:Image





 id="badApple





" source="{





BadApple}





" width="150





" height="151.8





"/>







    <mx:Image





 id="pumpkin





" source="{





Pumpkin}





" width="150





" height="131.7





"/>







    

</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入声音文件

您可以在 Flex 应用程序中通过使用 [Embed] 元数据标签嵌入 MP3 文件并播放它。

注意: 记住嵌入的声音文件会成为您的应用程序 (最终的 SWF 文件) 的一部分, 而 MP3 文件会很大, 从而会使您的应用程序变得很大并会对应用程序的下载速度产生负面影响。

此实例将该 MP3 的一个新实例创建为一个 SoundAsset 。它使用 SoundAsset 类的 play() 方法来播放 MP3 文件的实例, 并存储返回的 SoundChannel 对象, 从而您可以稍后调用 SoundChannel 对象的 stop() 方法以结束播放。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 xmlns:mx="http://www.adobe.com/2006/mxml





" layout="vertical





" horizontalAlign="center





" verticalAlign="center





" viewSourceURL="srcEmbeddingSoundFiles/index.html





">







    <mx:Script>






        <!





[





CDATA[






            import





 mx.core.SoundAsset;
            import





 flash.media.*





;

            [





Embed(





source=





"assets/pie-yan-knee.mp3"





)]







            [











]






            public





 var





 Song:





Class;

            public





 var





 mySong:





SoundAsset =





 new





 Song()





 as





 SoundAsset;
            public





 var





 channel:





SoundChannel;
            
            public





 function





 playSound()





:





void





 
            {







                // Make sure we don't get multiple songs playing at the same time






                stopSound()





;
                
                // Play the song on the channel






                channel =





 mySong.play()





;
            }







            
            public





 function





 stopSound()





:





void





 
            {







                // Stop the channel, but only if it exists






                if





 (





 channel !=





 null





 )





 channel.stop()





;
            }







        ]]





>






    </mx:Script>






    
    <mx:HBox>






        <mx:Button





 label="play





" click="playSound()





;"/>







        <mx:Button





 label="stop





" click="stopSound()





;"/>





        
    </mx:HBox>






    
    <mx:Text





 width="348





" textAlign="center





" color="#ffffff





">







        <mx:htmlText>






            <![CDATA[





<a href="http://derekaudette.ottawaarts.com/music.php">Pie-Yan-Knee Written and Performed by: Derek R. Audette © 2004 (Creative Commons Attribution License)</a>





]]>






        </mx:htmlText>






    </mx:Text>





 
    

</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

嵌入 SVG 文件

可以将 SCG 文件嵌入到 Flex 应用程序中。

嵌入 SVG 文件与嵌入图像几乎是相同的。 差别在于您可以将嵌入的 SVG 文件的实例当作 Sprite 类的实例处理。 (它们实际上是 SpriteAsset 类的实例, SpriteAsset 类是 Sprite 类的子类。) 嵌入的 SVG 文件还保留它们的矢量属性, 且在被缩放或转换时不会显示像素。

注意: 不能在运行时导入 SVG 文件;仅可以在编译时在 Flex 应用程序中嵌入它们。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    layout="horizontal





" 
    viewSourceURL="srcEmbeddingSvgFiles/index.html





"
    width="600





" height="470





"


>






    <mx:Script>






    <!





[





CDATA[






            [





Embed(





source=





"assets/frog.svg"





)]







            [











]






            public





 var





 SvgFrog:





Class;            
        ]]





>






    </mx:Script>







    <mx:Image





 id="smallFrog





" source="{





SvgFrog}





" width="128





" height="130





"/>







    <mx:Image





 id="largeFrog





" source="{





SvgFrog}





"/>






</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

提示: SVG 青娃图形是 Architetto Francesco Rollandin 创建的, 他慷慨地将它发布到 Open Clip Art Library公共区域 中。 您可以在网站找到其他可免费使用和试验的 SVG 文件。

嵌入字体

您希望在 Flex 应用程序中嵌入一种字体并将它用作基于文本的组件的样式。

下面的示例创建引用嵌入的字体的 font-family 名称的一个类选择器。 接着它会创建一个 Text 控件并将其样式设置为该类选择器。

提示: 您在嵌入字体以节省文件大小时仅可以从字体添加某些字符, 方法是指定您的 @font-face 声明的 unicode-range 属性。

详细信息: 有关使用字体的详细信息, 请参阅 Flex 2 开发人员指南* 中的“使用字体”。

示例
<?xml version="1.0" encoding="utf-8"?>






<mx:Application





 
    xmlns:mx="http://www.adobe.com/2006/mxml





" 
    layout="horizontal





" 
    horizontalAlign="center





" 
    verticalAlign="center





" 
    viewSourceURL="src/EmbeddingFonts/index.html





"


>







    <mx:Style>






        @font-face





 
        {






            font-family





:





 Copacetix





;







            src





:





 url(





"assets/copacetix.ttf"





)





;






            unicode-range





:






                U+0020-U+0040, 





/* Punctuation, Numbers */







                U+0041-U+005A, 





/* Upper-Case A-Z */






                U+005B-U+0060, 





/* Punctuation and Symbols */






                U+0061-U+007A, 





/* Lower-Case a-z */






                U+007B-U+007E





;





 /* Punctuation and Symbols */







        }







        .MyTextStyle 
        





{





 
            font-family





:





 Copacetix





;





 
            font-size





:





 24pt





;





    
        }







    </mx:Style>







    <mx:Text





 styleName="MyTextStyle





" text="Embedded fonts rock!





" width="100%





"/>







    

</mx:Application>





结果
-->
<script type="text/javascript"> </script>

若要查看全部源代码, 请右键单击 Flex 应用程序并从上下文菜单中选择“查看源代码”。

Copacetix.com 的 Copacetix TrueType 免费字体。 在 Creative Commons Attribution-ShareAlike 2.0 许可证 下得到许可。


更多信息

有关嵌入资源的详细信息, 请参阅 Flex 2 开发人员指南* 中的“嵌入资源”。

关于作者

Aral Balkan 快乐地工作着, 领导开发团队, 设计用户体验, 架构 Rich Internet Application, 并运行 OSFlash.org* 、London Macromedia User Group 及其公司 Ariaware* 。 他热爱谈论设计模式及为书藉和杂志写文章。 他还创作了 Flash 平台的开放源码 RIA 框架: Arp* 。 Aral 通常非常坚持己见、活跃且热情。 他喜欢微笑, 甚至会一边嚼口香糖一边走路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值