Можно ли использовать названия цветов в AS3?

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

Нет, но никто не сможет помешать вам создать класс со статическими константами и использовать их как таковые:graphics.beginFill(Color.BLUE);

Organis 26.04.2024 09:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, но здесь у вас есть несколько вариантов:

  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, не стесняйтесь использовать ее, если хотите :)

Хороший ответ! Меня очень удивляет, что нет готовой библиотеки с предустановленными цветами.

Crimea is Ukraine 01.05.2024 10:27

@CrimeaisUkraine Рада, что смогла помочь! честно говоря, я тоже удивлён, я думал, что кто-то там будет. может другие думали так же? Я только что загрузил ее в виде крошечной библиотеки, не стесняйтесь использовать ее, если хотите - это избавит вас от хлопот!

dyxribo 01.05.2024 22:09

Класс Enum НАМНОГО лучше, чем попытка расширить Shape или что-то еще; потому что вы можете повторно использовать цветовые константы повсюду, в то время как расширение Shape таким образом приведет к тому, что вы повсюду замените любые фигуры (включая пользовательские спрайты или MC), чтобы получить запрошенную функциональность. Также библиотека цветов может быть копией преобразования RGB других системных цветов, скажем public class PantoneColor { public static const PANTONE001=0x000016; ... } (пример).

Vesper 03.05.2024 10:01

Другие вопросы по теме