六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 126|回复: 0

使用@Embed嵌入元素

[复制链接]

升级  58.8%

250

主题

250

主题

250

主题

进士

Rank: 4

积分
794
 楼主| 发表于 2013-2-7 19:09:31 | 显示全部楼层 |阅读模式
以在Flex应用程序中嵌入各种元素。被嵌入的元素将编译进SWF文件。它们不是在运行时载入的,所以不必为应用程序部署原元素。
 
可以嵌入的图像格式有PNG、JPEG、GIF。嵌入后可以同时使用它的多个实例。

下面的例子使用[Embed]原标签经image嵌入应用程序,并且采用绑定ActionScript类的形式。这就可以绑定Image控件的source属性到Logo类。可以绑定Logo类到任何可以使用image的组件属性上,比如Button控件的icon属性。
例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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")]            [Bindable]            public var Logo:Class;                    ]]>    </mx:Script>    <mx:Image id="myLogo" source="{Logo}"/>    <mx:Image id="myLogo2" source="{Logo}"/></mx:Application> 
-----------------------------------------------------------------

如果想只使用一个实例的话,可以使用内部@Embed直接将图像嵌入Flex应用程序。

下面的例子添加了一个Image组件,并且使用@Embed直接定业了它的source属性。要使用相同的image,就必须再次将此image嵌入到那个组件中。

如果想显示一个嵌入image的多个实例,可以用[Embed]原标签代替。

例子:

<?xml version="1.0" encoding="utf-8"?><mx:Application<!-- http://yecon.blog.hexun.com/29628260_d.html -->    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>  -----------------------------------------------------------------

可以在Flex应用程序中嵌入image,并且可以将它应用于组件的皮肤。可以定义一个CSS选择器,以设置所有组件的皮肤。

在下面的例子中,为Button控件创建了一个CSS选择器。

例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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> -----------------------------------------------------------------

嵌入SWF文件的方法与嵌入IMAGE的方法差不多,只是可以把已嵌入的SWF文件实例当做MovieClip类。

(不可直接访问嵌入SWF文件的属性和方法,但是可以使用LocalConnection来允许他们之间的通信)

 
例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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")]            [Bindable]            public var Hourglass:Class;                    ]]>    </mx:Script>    <mx:Image id="hourglass" source="{Hourglass}"/></mx:Application> -----------------------------------------------------------------

可以嵌入存在于应用程序的SWF文件库里的特殊标签。

Flash定义了三种类型的标签:Button、MovieClip、Graphic。可以嵌入Button和MovieClip标签到Flex应用程序,但是不不能嵌入Graphic标签。
 

例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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")]            [Bindable]            public var BadApple:Class;                        [Embed(source="assets/library.swf", symbol="Pumpkin")]            [Bindable]            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> 
 -----------------------------------------------------------------

可以通过使用[Embed]原标签的方法在Flex应用程序中嵌入MP3文件。

 
例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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")]            [Bindable]            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 (c) 2004 (Creative Commons Attribution License)</a>]]>        </mx:htmlText>    </mx:Text>    </mx:Application>  
-----------------------------------------------------------------

可以在Flex应用程序中嵌入SVG文件

 
例子:


<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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")]            [Bindable]            public var SvgFrog:Class;                    ]]>    </mx:Script>    <mx:Image id="smallFrog" source="{SvgFrog}" width="128" height="130"/>    <mx:Image id="largeFrog" source="{SvgFrog}"/></mx:Application> -----------------------------------------------------------------

可以在Flex应用程序中嵌入字体

 
例子:

<?xml version="1.0" encoding="utf-8"?><!-- http://yecon.blog.hexun.com/29628260_d.html --><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>  
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表