As3.0 类的【枚举】
As3.0 类的枚举
“枚举”是您创建的一些自定义数据类型,用于封装一小组值。ActionScript 3.0 并不支持具体的枚举工具,这与 C++ 使用 enum 关键字或 Java 使用 Enumeration 接口不一样。不过,您可以使用类或静态常量创建枚举。例如,ActionScript 3.0 中的 PrintJob 类使用名为 PrintJobOrientation 的枚举来存储由 "landscape" 和 "portrait" 组成的一组值,如下面的代码所示:
public final class PrintJobOrientation
{
public static const LANDSCAPE:String = "landscape";
public static const PORTRAIT:String = "portrait";
}
按照惯例,枚举类是使用 final 属性声明的,因为不需要扩展该类。该类仅由静态成员组成,这表示不创建该类的实例。而是直接通过类对象来访问枚举值,如以下代码摘录中所示:
var pj:PrintJob = new PrintJob();
if(pj.start())
{
if (pj.orientation == PrintJobOrientation.PORTRAIT)
{
...
}
...
}
ActionScript 3.0 中的所有枚举类都只包含 String、int 或 uint 类型的变量。使用枚举而不使用文本字符串或数字值的好处是,使用枚举更易于发现字面错误。如果枚举名输入错误,ActionScript 编译器会生成一个错误。如果使用字面值,存在拼写错误或使用了错误数字时,编译器并不会报错。在上一个示例中,如果枚举常量的名称不正确,编译器会生成错误,如以下代码摘录中所示:
if (pj.orientation == PrintJobOrientation.PORTRAI) // compiler error
但是,如果拼错了字符串字面值,编译器并不生成错误,如下所示:
if (pj.orientation == "portrai") // no compiler error
创建枚举的第二种方法还包括使用枚举的静态属性创建单独的类。这种方法的不同之处在于每一个静态属性都包含一个类实例,而不是字符串或整数值。例如,以下代码为一星期中的各天创建了一个枚举类:
public final class Day
{
public static const MONDAY:Day = new Day();
public static const TUESDAY:Day = new Day();
public static const WEDNESDAY:Day = new Day();
public static const THURSDAY:Day = new Day();
public static const FRIDAY:Day = new Day();
public static const SATURDAY:Day = new Day();
public static const SUNDAY:Day = new Day();
}
ActionScript 3.0 并不使用这种方法,但是许多开发人员都使用,他们更喜欢使用这种方法提供的改进类型检查功能。例如,返回枚举值的方法可将返回值限定为枚举数据类型。以下代码不但显示了返回星期中各天的函数,还显示了将枚举类型用作类型注释的函数调用:
function getDay():Day
{
var date:Date = new Date();
var retDay:Day;
switch (date.day)
{
case 0:
retDay = Day.MONDAY;
break;
case 1:
retDay = Day.TUESDAY;
break;
case 2:
retDay = Day.WEDNESDAY;
break;
case 3:
retDay = Day.THURSDAY;
break;
case 4:
retDay = Day.FRIDAY;
break;
case 5:
retDay = Day.SATURDAY;
break;
case 6:
retDay = Day.SUNDAY;
break;
}
return retDay;
} var dayOfWeek:Day = getDay();
您还可以增强 Day 类的功能,以使其将一个整数与星期中的各天关联,并提供一个 toString() 方法来返回各天的字符串表示形式。您可能希望实践一下,采用这种方法来增强 Day 类的功能。
-------------------------------------------------------------------------------------------------------------
例:
package 
{
/**
	 * 颜色静态数据类  
	 * 
	 */
	public class ColorEnum
	{
		public static const _FFF3BC:ColorEnum = new ColorEnum(0xFFF3BC,"#FFF3BC","橙红色");
		public static const _00FF00:ColorEnum = new ColorEnum(0x00FF00,"#00FF00","绿色");
		public static const _FF0000:ColorEnum = new ColorEnum(0xFF0000,"#FF0000","红色");
		public static const _FFFFFF:ColorEnum = new ColorEnum(0xFFFFFF,"#FFFFFF","白色");
		public static const _00FFFF:ColorEnum = new ColorEnum(0x00FFFF,"#00FFFF","青色");
		public static const _000000:ColorEnum = new ColorEnum(0x000000,"#000000","黑色");
		public static const _663300:ColorEnum = new ColorEnum(0x663300,"#663300","棕色");
		public static const _0000FF:ColorEnum = new ColorEnum(0x0000FF,"#0000FF","蓝色");
		public static const _422200:ColorEnum = new ColorEnum(0x422200,"#422200","深棕色");
		public static const _0066CC:ColorEnum = new ColorEnum(0x0066CC,"#0066CC","淡蓝色");
		public static const _339900:ColorEnum = new ColorEnum(0x339900,"#339900","草绿色");
public static var ENUM_TYPE:Object = {ENGLISH:"english",CHINESE:"chinese",GERMAN:"german"}
public var original:Number;
		public var name:String;
		public var description:String;
public function ColorEnum(original:Number,name:String,description:String):void
		{
			this.original = original;
			this.name = name;
			this.description = description;
		}
	}
}
-------------------------------------------------------------------------------------------------------------
引用:
trace(ColorEnum._FFF3BC.original,ColorEnum._FFF3BC.name,ColorEnum._FFF3BC.description);
As3.0 类的【枚举】的更多相关文章
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
		
通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也 ...
 - AS3.0 自定义右键菜单类
		
AS3.0 自定义右键菜单类: /** * 自定义右键菜单类 * 自定义菜单项不得超过15个,每个标题必须至少包含一个可见字符. * 标题字符不能超过100个,并且开头的空白字符会被忽略. * 与任何 ...
 - as3.0 interface接口使用方法
		
[转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...
 - Java&&As3.0 中的final 关键字
		
Java和AS3.0关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. 可以修饰的对象: fin ...
 - Java基础学习(五)-- Java中常用的工具类、枚举、Java中的单例模式之详解
		
Java中的常用类 1.Math : 位于java.lang包中 (1)Math.PI:返回一个最接近圆周率的 (2)Math.abs(-10):返回一个数的绝对值 (3)Math.cbrt(27): ...
 - “AS3.0高级动画编程”学习:第一章高级碰撞检测
		
AdvancED ActionScript 3.0 Animation 是Keith Peters大师继"Make Things Move"之后的又一力作,网上已经有中文翻译版本了 ...
 - “AS3.0高级动画编程”学习:第二章转向行为(下)
		
在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek).避开(flee).到达(arrive).追捕(pursue).躲避(evade).漫游(wander).这一篇将继续学习其它更复杂, ...
 - “AS3.0高级动画编程”学习:第二章转向行为(上)
		
因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) 原作者:菩提树下的 ...
 - “AS3.0高级动画编程”学习:第三章等角投影(上)
		
什么是等角投影(isometric)? 原作者:菩提树下的杨过出处:http://yjmyzz.cnblogs.com 刚接触这个概念时,我也很茫然,百度+google了N天后,找到了一些文章: [转 ...
 
随机推荐
- JavaBean的属性变量名前两个字母大小写问题
			
Java属性命名规范! 一般情况下.Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等), ...
 - C# TextBox中的Validating与Validated事件[转]
			
validating事件发生的时候,值还没有被真正存入,所以是空的,而validated事件发生的时候,值已经存入,所以能取出:一个相当于值的前因,一个相当于值的后果.也就是说,可以用validati ...
 - eclipse怎么连接到MySQL中的表!!!!!
			
简介: 用eclipse编写的好的代码,我们怎么才能连接到数据库呢?对于初学者,特别是在连接数据库这块经常会发生一些莫名的错误,一般来说,归根是我们连接数据库这一过程发生错误.那么我们如何来解决呢?那 ...
 - URAL 1525 Path
			
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> us ...
 - <?php function say() {     echo 'hello world'; } //在这里调用函数 say(); php 调用方法say()
			
<?php function say() { echo 'hello world'; } //在这里调用函数 say(); php 调用方法say()
 - 分享给大家一个简单的数据导出excel类
			
<?php /** * 生成excel文件操作 * * @author wesley wu * @date 2013.12.9 */ class Excel { private $limit = ...
 - OpenCV2.x自学笔记——最大类间方差法OTSU
			
推荐用法:(参数勿动) threshold(gray,binary,0,255,CV_THRESH_OTSU+CV_THRESH_BINARY);
 - 7 个 jQuery 最佳实践
			
前言 随着富网络应用(rich web applications)数量的增长,以及用户对快速交互响应的高期望,开发者开始使用JavaScript库来快速高效的完成一些重复性的工作.这其中最流行的Jav ...
 - luci小记
			
LuCI使用controller目录下的lua脚本中的index函数来构造了一个dispatch树.cgi环境变量PATH_INFO会被用在dispatch树种,例如 cgi-bin/luci/foo ...
 - MySQL Replicationation进阶
			
摘要 上一篇: MySQL Replication 基础 下一篇 MySQL Replication-MHA 一.主主复制 二.半同步复制 三.复制过滤器 四.总结 五.切分 待续 一.主主复制 M ...