`
bal1212
  • 浏览: 76872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】AS3 使用dynamic属性来创建动态类

 
阅读更多
动态类
“动态”类定义在运行时可通过添加/ 更改属性和方法来改变的对象 非动态类(如 String类)是“密封”类。您不能在运行时向密封类中添加属性或方法。


在声明类时,可以通过使用 dynamic 属性来创建动态类 。例如,下面的代码创建一个名为
Protean 的动态类:
  1. dynamic class Protean
  2. {
  3. private var privateGreeting:String = "hi";
  4. public var publicGreeting:String = "hello";
  5. function Protean()
  6. {
  7. trace("Protean instance created");
  8. }
  9. }

如果要在以后实例化 Protean 类的实例,则可以在类定义的外部向该类中添加属性或方法
例如,下面的代码创建 Protean 类的一个实例,并向该实例中添加两个名称分别为 aString和 aNumber 的属性:

  
  1. var myProtean:Protean = new Protean();
  2. myProtean.aString = "testing";
  3. myProtean.aNumber = 3;
  4. trace(myProtean.aString, myProtean.aNumber); // 测试 3

添加到动态类实例中的属性是运行时实体,因此会在运行时完成所有类型检查。不能向以这种方式添加的属性中添加类型注释。


您还可以定义一个函数并将该函数附加到 myProtean 实例的某个属性,从而向 myProtean实例中添加方法。下面的代码将 trace 语句移到一个名为 traceProtean() 的方法中:

  1. var myProtean:Protean = new Protean();
  2. myProtean.aString = "testing";
  3. myProtean.aNumber = 3;
  4. myProtean.traceProtean = function ()
  5. {
  6. trace(this.aString, this.aNumber);
  7. };
  8. myProtean.traceProtean(); // 测试 3

但是,以这种方式创建的方法对于 Protean 类的任何私有属性或方法都不具有访问权限。而且,即使对 Protean 类的公共属性或方法的引用也必须用 this 关键字或类名进行限定。 下面的示例说明了 traceProtean() 方法,该方法尝试访问 Protean 类的私有变量和公共变量。

  1. myProtean.traceProtean = function ()
  2. {
  3. trace(myProtean.privateGreeting); // undefined
  4. trace(myProtean.publicGreeting); // hello
  5. };
  6. myProtean.traceProtean();
分享到:
评论

相关推荐

    FLASH As3_basic 入门源码

    2. 04_dynamic_class_no_library:动态类通常指的是在运行时可以添加或修改属性和方法的类。"no_library"可能表示这些类没有关联到Flash库中的图形元件,而是纯粹通过代码创建和操作的对象。 3. 05_package_classes...

    as3 textfild动态文本滚动条模型

    总结起来,创建AS3中的`TextField`动态文本滚动条模型涉及到以下步骤: 1. 设置`TextField`的`scrollV`和`scrollH`属性。 2. 创建自定义滚动条的轨道和滑块形状。 3. 添加事件监听器,处理滑块的拖动和文本的改变。 ...

    Eclipse3.4创建动态web项目

    3. **配置项目设置**:在“Dynamic Web Project Settings”中,你可以设置Web项目的一些基本属性,如Web内容根目录(默认为“WebContent”)、目标运行时(Target Runtime)等。选择一个合适的Java EE版本,比如Java...

    EF动态表名 c# 读取不固定表

    为了读取动态表,你需要创建一个实体类,然后在`OnModelCreating`中动态地为这个类映射到刚才生成的表名: ```csharp public class DynamicEntity { public int Id { get; set; } // 其他字段... } ...

    [转][AS3] flash.text.TextField應用攻略

    【标题】:“[转][AS3] flash.text.TextField应用攻略” 这篇博客文章主要探讨的是在ActionScript 3(AS3)中如何有效地使用`flash.text.TextField`类进行文本处理和显示。`flash.text.TextField`是AS3中一个重要的...

    动态创建工具栏及工具栏按钮的例子access2000

    3. **创建自定义工具栏**:使用VBA,可以使用`CommandBars`集合的`Add`方法创建新的工具栏。例如: ```vba Dim toolbar As CommandBar Set toolbar = CommandBars.Add("MyCustomToolbar", msoToolBar, , True) `...

    nape as3.0 api文档

    5. **动态身体(Dynamic Bodies)** - `DynamicBody`可以自由移动和旋转,通常用于可交互的游戏对象。 ### 二、Nape力学 1. **力与扭矩(Forces and Torques)** - `Body`可以应用力和扭矩来改变其运动状态,...

    flash as3 加载外部swf jpg gif png loader urlloader的通用代码

    通过以上介绍,我们可以了解到如何在Flash AS3中使用Loader 和 URLLoader 类来加载外部SWF、JPG、GIF 和 PNG 文件的方法。这对于制作复杂的Flash应用和游戏来说是非常有用的技能。掌握了这些知识点后,开发者就能够...

    VB.NET - WinForms - Dynamic Control Creation.rar_creation

    2. **实例化控件**:使用控件类的New关键字创建一个新实例,例如`Dim myButton As New Button()`。 3. **设置属性**:对控件进行定制,如设置Text、Size、Location等属性,例如`myButton.Text = "点击我";myButton...

    使用Myeclipse 创建WebService 项目服务端

    在MyEclipse中,选择"File" -> "New" -> "Dynamic Web Project",输入项目名称并设置相关属性,如目标运行时环境(Target Runtime)为Tomcat或其它支持JAX-WS的服务器。 接着,我们需要创建服务接口。在Java源代码...

    VB.api.code.programming.model.dynamic.control.rar_Dynamic-Progra

    2. **动态创建控件**:在VB中,可以通过`CreateObject`或`New`关键字来创建COM对象,或者使用`UserControl`类创建自定义控件。例如,`Dim btn As New Button`会在运行时创建一个新的按钮控件。 3. **控件属性和方法...

    新技术培训 培训讲义4_对象和字典.doc

    1. **Object 类**:Object类是所有AS3类的基础,它允许通过关键字`new`创建实例,并动态地为其分配属性。动态赋值的关键取决于`dynamic`关键字,使得Object实例可以在运行时添加新的属性。例如: ```as3 var obj:...

    DynamicJSON:使用Swift 4.2的新@dynamicMemberLookup功能像JavaScript一样动态访问JSON属性

    通过创建自定义的动态成员查找类型,我们可以实现类似JavaScript的动态属性访问,简化了JSON数据的解析和使用。在实际开发中,结合`JSONSerialization`和`@dynamicMemberLookup`,我们可以构建更高效、更简洁的JSON...

    Linux+Qt生成Execl表格的源码

    在Linux环境下,开发一款应用程序来生成Excel表格可能会面临与Windows平台不同的挑战,因为Windows系统通常使用Microsoft Office的COM接口来创建Excel文件。然而,通过使用跨平台的Qt库,我们可以克服这一难题。Qt是...

    flash滚动条动态文本-源码

    在AS3(ActionScript 3)中,我们可以使用`TextField`类来创建动态文本字段,并通过其属性和方法来控制文本的显示。 滚动条则是在文本内容超过显示区域时,用来帮助浏览和导航的控件。在Flash中,我们可以为`...

    FLASH动态文本的编写以及外部文本的载入

    在AS3(ActionScript 3.0)中,动态文本由`TextField`类表示,它提供了丰富的文本格式化和操作功能。 1. 创建动态文本: - 在Flash时间轴上选择“插入”>“新建元件”,选择“动态文本”创建一个文本字段。 - 在...

    ABAP351高级编程-动态编程.rar

    6. **CL_AS_DYNAMIC_PROGRAM** Class: SAP提供了一个类,用于在运行时创建和执行ABAP源代码。这对于构建灵活的脚本或者根据业务需求自动生成代码的场景非常有用。 7. **Method Generation**: 通过`cl_abap_code_...

Global site tag (gtag.js) - Google Analytics