[转]AS3中的常量

as3中常量通常是使用的字符串,比如说TextFieldType.INPUT、StageAlign.TOP_LEFT,有些时候这样使用没什么大碍,而有些时候如果随意传入一个字符串就可能出现运行异常,解决的办法就是使用if…else…来判断,如果不是允许的字符串则抛出异常,提醒调用者。

今天想到了一个代替的方法,能够很好的避免if…else…的长串判断,并且是强类型的,类似于枚举。缺点就是必须创建对象。

package 
{
import flash.errors.IllegalOperationError;
public class MapType
{
// 常量 a
public static const RECTANGLE_MAP_RECTANGLE_TILE:MapType = createInstance(“rectangleMapRectangleTile”);

// 常量 b
public static const DIAMOND_MAP_DIAMOND_TILE:MapType = createInstance(“diamondMapDiamondTile”);

// 常量 c
public static const RECTANGLE_MAP_DIAMOND_TILE:MapType = createInstance(“rectangleMapDiamondTile”);

// 常量 d
public static const RECTANGLE_MAP_HEXAGON_TILE:MapType = createInstance(“rectangleMapHexagonTile”);

// 记录常量的字符串形式
private var _type:String = null;

public function MapType(type:String)
{
if (!_allowInstance)
{
throw new IllegalOperationError();
}

_type = type;
}

// 只允许类内部创建对象
private static var _allowInstance:Boolean = false;

private static function createInstance(type:String):MapType
{
_allowInstance = true;
var instance:MapType = new MapType(type);
_allowInstance = false;

return instance;
}

public function toString():String
{
return _type;
}

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值