关于AS3中的dynamic 关键字

本文详细介绍了AS3中动态类的使用方式及其限制条件。包括如何在运行时为类实例添加动态属性,以及动态方法的覆盖。同时,还列举了一些内置的动态类,并解释了动态属性添加的具体规则。

指定在运行时类的实例可以拥有添加的动态属性。如果使用某个类上的 dynamic 属性,您可以在运行时向该类的实例添加属性。未标记为 dynamic 的类被视为密封类,这意味着不能向该类的实例添加属性。
如果某个类是密封的(非动态),则尝试获得或设置该类实例中的属性就会导致错误。如果将编译器设置为严格模式并在创建实例时指定数据类型,则尝试向密封对象添加属性将生成编译器错误;否则发生运行时错误。
dynamic 属性不能被子类继承。如果扩展动态类,则只有声明子类具有 dynamic 属性时,子类才是动态的。
注意:仅支持在外部脚本文件中使用此关键字,而不支持在使用“Actions”面板编写的脚本中使用此关键字。
在这里我们要强调二点:
1.动态类随可以动态增加方法,但是动态增加的方法只能访问原类中的public访问权限,private权限是无法访问的。
2.动态的增加属性,还可以覆盖其原有的方法
dynamic class Person{  
 public var firstName:String = "Joe";  
  public var lastName:String = "Doe";  
}  
dynamic class Person{
  public var firstName:String = "Joe";
  public var lastName:String = "Doe";
} 

我们可以创建Person的实例,动态的增加属性,还可以覆盖其原有的方法,比如覆盖toString()方法:
var p:Person = new Person();
p.age = 25;//动态增加属性
p.toString = function():String{//覆盖原有方法
  return p.lastName + "," + p.firstName + "-" + age;
}

trace(p);//输出结果:Doe,Joe-25
应该注意动态的增加属性或覆盖原有方法时,该dynamic类的属性是private的,我们便不能访问到该属性。例如:
假设我们使Person这个对象的lastName是private,而不是public,那么我们的输出结果就是:Undefined,Joe-25.
 

as3中有几个类是动态类来的
Error 
RegExp 
Date 
Function 
Class 
Array
MovieClip
这些都是动态类,可以动态添加属性,加是可以加了,但加也有一定规则,需要使用数组访问符来加 和 访问

数组访问符有两种作用
1. 动态设置属性
2. 动态获取属性(相对意义上的动态)
不能使用点语法 .    ,要使用数组访问符 ,但有一个例外,MovieClip是可以直接使用点语法来访问动态属性

数组访问符有两种作用
1. 动态设置属性
2. 动态获取属性(相对意义上的动态)
动态与静态是相对的概念,在计算机概念上,编译文件的时候(即按下ctrl+Enter时),编译器(你不懂的话,先可以理解成flash软件)会先对源代码中 声明的对象 属性 方法  以及场景中所有对象
(比如一个图片 它其实是一个bitmap对象   一个影片剪辑  它其实还是一个MovieClip对象 只不过存在于场景中 显示出来罢了 实际在文件内部它还是识别为一个对象)
编译器会对这些已经存在的对象作一次点名,并把它们记录在一个“列表”中(这个列表是 flashPlayer底层自动维护的 我们不用理)
因为这个表已经记录在案所有编译阶段已经声明的对象,程序使用它们的时候 ,就可以在这个列表中查找
说到这里 不得不说一下内存空间的事情了
因为不同的数据类型 它们在内存中都有一定的固定字节长度  编译阶段已经声明的对象 运行时内存空间就已经申请好了
不会频繁向系统申请内存了 (系统的内存不是你想要就要 它像一个停车场 需要调度才可以腾位置的 太多的空位间隔 就要把车移动腾在一起 以整理出大空地(内存))   这个腾空间的概念 差不多就是内存整理 ,需要浪费一定的系统资源的
所以说静态编译的对象 会相对省系统资源 ,这个也是as3.0中大部分类都默认为密封类(即不能随便添加动态属性)的原因了
上面这段是解释为什么不能用  .属性 来添加 动态属性 的原因,as3中大部分对象都是密封类,不能直接使用  .属性 来添加

参考:http://www.cnblogs.com/mengyusha/archive/2011/07/22/2113488.html

       http://www.xzfblog.com/archives/as3%E4%B8%ADroot-%E6%97%A0%E6%B3%95%E7%9B%B4%E6%8E%A5%E5%8A%A8%E6%80%81%E6%B7%BB%E5%8A%A0%E5%B1%9E%E6%80%A7.html

转载于:https://www.cnblogs.com/ForFreeDom/archive/2012/02/15/2352262.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值