ActionScript 3能否使用字符串格式的颜色名称(别名)编码?
ActionScript中能否使用字符串颜色别名?
ActionScript本身不支持直接在beginFill()这类绘图API中使用"blue"、"orange"这类字符串颜色别名——你写的graphics.beginFill('blue')会报错,因为beginFill()只接受数值类型的颜色参数,比如十六进制值(你之前写的0xe0057B7是错误格式,蓝色正确值为0x0000FF)、RGB整数。
不过你可以自己写个简单的颜色映射工具类,实现便捷的别名调用:
package { public class ColorUtils { // 定义常用颜色别名与对应十六进制值 private static const COLOR_MAP:Object = { "blue": 0x0000FF, "orange": 0xFFA500, "red": 0xFF0000, "green": 0x00FF00, "white": 0xFFFFFF, "black": 0x000000 }; // 根据别名获取颜色值,找不到则返回黑色 public static function getColor(colorName:String):uint { return COLOR_MAP[colorName.toLowerCase()] || 0x000000; } } }
之后在绘图代码里这样使用即可:
package { import flash.display.*; public class NewActionScriptDesktopProject extends Sprite { public function NewActionScriptDesktopProject() { graphics.beginFill(ColorUtils.getColor('blue')); graphics.drawRect(0,0,300,200); } } }
如果是基于Flex框架的项目,内置的mx.graphics.Color类可以直接解析字符串颜色,但纯ActionScript项目没有这个内置能力,只能自行实现映射或直接使用数值颜色。
内容的提问来源于stack exchange,提问作者Crimea is Ukraine
相关产品推荐
相关产品推荐

