AS3中可以使用颜色名称吗?

问题描述 投票:0回答:1

我试图找出是否可以在 Actionscript 中以字符串格式(“orange”、“blue”)使用颜色别名。由于 AS 的主要目的是生成 SFW 图形,因此必须有方便的方法以类似于其他编程语言允许的方式进行编码。

我希望这段代码会生成一个蓝色矩形:

package
{
    import flash.display.*;

    public class NewActionScriptDesktopProject extends Sprite
    {
        public function NewActionScriptDesktopProject()
        {
                    graphics.beginFill('blue');
                    graphics.drawRect(0,0,300,200);
        }
    }
}

相反,代码应该包含以下内容:

graphics.beginFill(0xe0057B7);
actionscript-3 colors
1个回答
3
投票

不,但您有几个选择:

  1. 使用预定义值创建枚举类:
public class Color {
  static public const SKY_BLUE:uint = 0x0099FF;
}

public class Main extends Sprite {
  public function Main() {
    graphics.beginFill(Color.SKY_BLUE)
  }
}

  1. 更进一步,创建一个扩展 Shape 的自定义类(图形类不可扩展)并实现自定义图形方法:
  import flash.display.Shape;

  public class GFX extends Shape {
    public function GFX() {

    }

    public function beginFill(colorName:String, alpha:Number=1.0):void {
      graphics.beginFill(colorStringToInt(colorName), alpha);
    }

    public function colorStringToInt(colorString:String):uint {
      if (colorString == "skyblue") {
        return 0x0099FF;
      } else if (colorString == "darkgrey") {
        return 0x3D3D3D;
      } // etc.
    }
  }

就我个人而言,我采用了第一种方法的更复杂的路线,并创建了一个具有各种颜色操作函数的自定义 RGBA 类。这非常有帮助。 请查看此处,了解一些有关选择选项 1 时可以执行的操作的示例。

编辑:我已将我的颜色库与 SWC 二进制文件一起提交到一个单独的存储库中,如果需要,可以随意使用它:)

© www.soinside.com 2019 - 2024. All rights reserved.