Я пытаюсь выяснить, можно ли использовать псевдоним цвета в строковом формате («оранжевый», «синий») в Actionscript. Поскольку основной целью 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);





Нет, но здесь у вас есть несколько вариантов:
public class Color {
static public const SKY_BLUE:uint = 0x0099FF;
}
public class Main extends Sprite {
public function Main() {
graphics.beginFill(Color.SKY_BLUE)
}
}
ИЛИ
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, не стесняйтесь использовать ее, если хотите :)
Хороший ответ! Меня очень удивляет, что нет готовой библиотеки с предустановленными цветами.
@CrimeaisUkraine Рада, что смогла помочь! честно говоря, я тоже удивлён, я думал, что кто-то там будет. может другие думали так же? Я только что загрузил ее в виде крошечной библиотеки, не стесняйтесь использовать ее, если хотите - это избавит вас от хлопот!
Класс Enum НАМНОГО лучше, чем попытка расширить Shape или что-то еще; потому что вы можете повторно использовать цветовые константы повсюду, в то время как расширение Shape таким образом приведет к тому, что вы повсюду замените любые фигуры (включая пользовательские спрайты или MC), чтобы получить запрошенную функциональность. Также библиотека цветов может быть копией преобразования RGB других системных цветов, скажем public class PantoneColor { public static const PANTONE001=0x000016; ... } (пример).
Нет, но никто не сможет помешать вам создать класс со статическими константами и использовать их как таковые:graphics.beginFill(Color.BLUE);