zoukankan      html  css  js  c++  java
  • Flash元标签

    Flex 开发工作中, 组件的开发是比不可少的环节, 在你的自定义组件中合理地应用元标签可以使组件更容易, 更方便, 更友好地被引入到应用中.

    你可以为MXML和ActionScript文件插入元标签,以便为Flex编译器提供信息。可执行代码中的元标签不会被编译,但会为控制如何编译元标签所标识的代码提供信息。

    下表列出了 Flex 中可以应用于 ActionScript 类的元标签.

     

    标签 描述
    [ArrayElementType] 在数组中定义所有允许的数据类型。
    [Bindable] 声明一个属性可以在代码中使用数据绑定表达式。
    [DefaultProperty] 定义组件在MXML中使用时的默认属性的名称。
    [Deprecated] 标识一个类或类的元素是不推荐使用的,这样编译器能认出他并在被调用时给出一个警告信息。
    [Effect] 定义MXML的特效属性名称。
    [Embed] 在编译时导入 JPED,PNG,SVG 或 SWF文件。也会导入SWC文件的图片资源。他的功能等同于MXML中的 @Embe 语法。
    [Event] 定义MXML的事件属性的名称和类型。
    [Exclude] 使 Flex Builder 的标签检查器忽略类元素。语法类似 [Exclude(name="label", kind="property")]
    [ExcludeClass] 是 Flex Builder 标签检查器忽略类。这相当于ASDoc中的 @private 标签。
    [IconFile] 定义一个图标文件,使组件在Adobe Flex Builder的插入面板中以该图标显示。
    [Inspectable] 定义一个属性的列表,供组件使用者在 Flex Builder 的的属性提示和标签检查中使用。同时也定义了属性的可用值。
    [InstanceType] 指定了 IDeferredInstance 中的,属性接受的数据类型。
    [NonCommittingChangeEvent] 定义一个事件过渡触发器。
    [RemoteClass] 把一个ActionScript对象映射到Java对象。
    [Style] 为组件的样式属性定义一个MXML标签属性。
    [Transient] 当一个 ActionScript 对象被映射到Java对象后,被该标签标识的属性,会从发送到服务端的数据中忽略掉。

    as3.0 使用【Embed】标签插入外部资源

    •  嵌入GIF,PNG,JPEG,MP3文件

    package
    {
       import flash.display.*;
       public class GIFEmbed extends Sprite 
       {
           [Embed(source = "../assets/talapetra.gif")]
           private var theClass:Class;
           public function GIFEmbed () 
           {
               var displayObj:DisplayObject = new theClass(); 
               addChild (displayObj); 
           }
       }
    }

    代码中的高亮行包括了源属性,指示了嵌入的名称和资源的路径。你可以使用绝对路径或者文档文件的相对路径来包含嵌入的描述。在这个示例中,这个名称为GIFEmbed.as的ActionScript类指示了定位到命名为\assets的文件夹中,这个文件夹包含了talapetra.gif的图片文件。

    注意:[Embed]元数据标签可以有另外一个可选属性,mimeType,它允许你指定链接资源的MIME类型。我将在后面再具体的讨论这个属性。

    ActionScript代码的顺序非常重要。你必须在声明变量前添加[Embed]元数据标签,而且这个变量的类型会是Class。在下面的代码片段中,[Embed]元数据标签中一个成为theClass,类型声明为Class的私有变量前使用:

    [Embed(source = "../assets/talapetra.gif")]  
       private var theClass:Class;

    在名称为GIFEmbed的函数内部,一个新的类型为DisplayObject命名为displayObj的变量被用来实例化theClass为一个新的DisplayObject。下一行使用addChild方法将displayObj添加到了显示列表当中,并在舞台上渲染:

    var displayObj:DisplayObject = new theClass(); 
        addChild (displayObj);

    参考示例文件,查看文件夹结构,确认GIFEmbed.as类文件和名称为 talapetra.gif的GIP图片的路径(放在assets目录中)。

    [Embed]元数据标签带有两个属性: Source:(必选的)使用这个属性来确认嵌入资源的名称和路径。如果你嵌入了一个元件,你可以用元件的关键词确定元件认嵌入到SWF中的名字。 mimeType:(可选的)使用这个属性来确定嵌入资源的MIME类型。如果这个属性没有设置,Flash会在源属性中根据导入资源文件的扩展名载入合适的类型。

    Flash CS4专业版支持与Flex一样的一系列MIME类型

    •  在帧脚本中使用[Embed]标签

    同前面列出的过程一样,元数据也可以应用到帧脚本。在这段中,我会描述怎么利用[Embed]标签来嵌入元数据到帧脚本中。如果你跟着示例文件,请参阅<Embed on Frame Script>目录下的文件:

    1、通过选择"文件">"新建">"Flash文件(ActionScript 3.0)"菜单来创建一个新的Flash CS4文件;

    2、将这个Flash文件保存为GIFEmbed.fla。

    3、选择图层1的第一帧并打开动作面板("窗口">"动作")。

    4、拷贝如下代码,并粘贴到脚本窗口:

    [Embed(source="../assets/talapetra.gif")] 
       var theClass:Class;
       var displayObject:DisplayObject = new theClass(); 
       addChild(displayObject);

    5、重复前面一个段落的10-13步测试SWF文件,并更新Flex SDK目录库路径来添加flex.swc文件。

    •  从SWF文件中嵌入一个元件

    package
    {
       import flash.display.*;
       import flash.events.MouseEvent;
       import flash.geom.Rectangle;
       public class SWFEmbed extends MovieClip 
       {
           public var displayObj:DisplayObject;
           [Embed(source="Movie.swf", symbol="Slice9")] 
           var theClass:Class;
           public function SWFEmbed()
           {
                displayObj = new theClass(); 
                addChild(displayObj);
                displayObj.x = 200; 
                displayObj.y = 220; 
           }
       }
    }

    在这段代码中,[Embed]元数据标签使用了source参数来确认将被嵌入的SWF文件的名称和路径。symbol参数来确认特殊元件的名称,这个元件是从source参数关联的SWF文件中嵌入的。

    •  使用[Embed]标签嵌入字体

    除了嵌入图片文件,SWFs,还有SWFs中的元件以外,[Embed]元数据标签还可以嵌入OpenType和TrueType字体到Flash文件中。在这个段落中,我将演示怎么使用[Embed]元数据标签在Flash CS4中嵌入字体。这篇文章将定你已经安装了Arial Bold字体在你的系统中。如果你没有这个字体,你可以从 SearchFreeFonts.com或者类似网站上购买它。

    注意:[Embed]元数据标签仅仅支持类和成员变量,如果你尝试在函数前使用[Embed]标签,如下的编译错误将会显示:"Embed is only supported on classes and member variables."(Embed仅仅支持类和成员变量)

    如果你是跟随教程学习,请参阅示例文件中TrueType目录。

    1、选择"文件">"新建">"ActionScript文件",创建一个新的ActionScript文件。

    2、保存文件为FontClass.as。

    3、拷贝并粘贴如下代码到脚本窗口中:

    package 
    {
        import flash.text.*;
        import flash.display.MovieClip;
        public class FontClass extends MovieClip 
        {            
         [Embed(source="Arial Bold.ttf", fontName="myFont", fontWeight="bold", advancedAntiAliasing="true", mimeType="application/x-font")]
         private var theClass:Class;
         public function FontClass ()
         { 
                var t:TextField=new TextField();
                t.embedFonts = true; 
                var textFormat:TextFormat=new  TextFormat();
                textFormat.size = "30";
                textFormat.font = "myFont";
                t.text = "[Embed] metadata rocks!!!";
                t.width = 500;
                t.setTextFormat (textFormat); 
                addChild (t);  
         } 
        } 
    }


    上面代码中的高亮部分,[Embed]元数据标签中使用到如下的参数来嵌入一个Arial bold字体:

    Source: 这个参数指出了font文件的位置。如果愿意,你可以使用systemFont参数确认名称而不是source来嵌入系统字体。 fontName: 这个参数指明了嵌入字体的名称,字体的名称是一个唯一标识,所以你可以通过名称来调用字体。 mimeType: 这个参数描述了嵌入元数据的MIME类型。因为你在这个例子中嵌入了一种字体,你可以设置MIME类型为"application/x-font"。 fontWeight: 这个参数表明了字体的粗细,如粗体或者正常。

    注意:如果字体有粗细,并且你没有在[Embed]元数据标签中包含fontWeight参数,当测试SWF文件是,你会看到如下编译错误:

    Exception during transcoding: Font for alias 'myFont' with plain weight and style was not found at... (意外的转换:带有粗细和样式的别名为'myFont'的字体没有被找到在...)

    随着嵌入字体的路径(如图11)。

    •  使用嵌入的XML文件

    在这篇文章的前面段落中,我讲述了使用 [Embed] 元数据标签嵌入图形文件,SWF文件,SWF文件中元件,还有字体等到SWF中。所有这些可能性都是非常有用的,不过还有另外一种类型的文件也可以采用 [Embed] 元数据标签嵌入到SWF中:XML文件。

    我保留最好的到最后,这是因为这个功能对于将外部数据导入到SWF中非常用用 -- 而且很直接地就可以完成。根据嵌入的XML数据,你可以做一些有趣的事情,为将来的工程记住这个是一个极好的提醒。

    下面的示例提供了使用 [Embed] 元数据标签嵌入一个XML文件的一个说明。如果你跟随教程学习,请参阅示例文件的XML目录。

    1、选择"文件">"新建">"Flash文件(ActionScript 3.0)"创建文件,并保存文件为XMLLoader.fla。

    2、选择"文件">"新建">"ActionScript文件"创建文件,并保存文件为 XMLLoader.as。

    3、当XMLLoader.as被激活,拷贝并粘贴如下如下代码到脚本窗口:

    package 
    {
        import flash.display.*;
        import flash.utils.ByteArray;
        public class XMLLoader extends Sprite
        {
          [Embed(source = "training.xml",mimeType = "application/octet-stream")]
          private var theClass:Class;
          public function XMLLoader ()
          {
               var xmlObj:Object = new theClass();
               trace(xmlObj);
          }
         }
    }

    注意:当嵌入XML数据时,你必须将mimeType参数设置为"application/octet-stream"。 Flash不能通过XML文件的扩展名检测正确的MIME类型,所以无论什么时候你嵌入XML数据时都要设置mimeType参数。

    4、将代码粘贴到脚本窗口后,确保保存XMLLoader.as文件。

  • 相关阅读:
    Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)
    记一次用WireShark抓包摆脱Si服后台限制的过程
    反向代理Nginx
    对于新能源Can数据、电池BMS等字节和比特位的解析
    WireShark抓包命令
    .NET下寄宿于控制台的HTTPS监听
    RSA等非对称加密为什么要用公钥加密,而用私钥解密?
    FTP、SFTP与FTPS
    Python打包方法——Pyinstaller
    [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址
  • 原文地址:https://www.cnblogs.com/keng333/p/3116522.html
Copyright © 2011-2022 走看看