颜色与调色板
调色板
在你的游戏中,你需要在许多的地方使用颜色。dart:ui
提供了两个可用类:Color
和Paint
。
Color
类只是16进制颜色的包装。因此,创建Color对象只需要传入16进制的颜色色值。
比如:0xFF00FF00
就是不透明的绿色。
在package:flutter/material.dart
包中,我们可以通过枚举轻松使用常见颜色:
import 'package:flutter/material.dart' as material;
Color color = material.Colors.black;
一些更复杂的函数可能需要Paint,Paint包含更多可定义的选项,比如笔触、颜色、滤镜、混合等等。有时我们甚至只需要一个仅定义了颜色的Paint。
你可以这样定义Paint:
Paint green = Paint()..color = const Color(0xFF00FF00);
为了使游戏的颜色和调色板一致,Flame添加了Palette类。你可以使用它轻松访问所需的Color和Paint,也可以将游戏中使用的颜色定义为常量,这样就不会弄混它们。
BasicPalette
类是调色板外观的示例,并添加了黑和白两种颜色。因此若要使用黑色或者白色,可以直接从BasicPalette
访问它们。比如使用color
:
TextConfig regular = TextConfig(color: BasicPalette.white.color);
或者使用paint
:
canvas.drawRect(rect, BasicPalette.black.paint);
你可以参照BasicPalette
创建自己的调色板,为你的游戏制定配色方案。然后,你将能够访问静态在组件和类中各个颜色,防止和RGB混淆。
这是游戏BGUG 的方案示例:
import 'dart:ui';
import 'package:flame/palette.dart';
class Palette {
static PaletteEntry white = BasicPalette.white;
static PaletteEntry toastBackground = PaletteEntry(Color(0xFFAC3232));
static PaletteEntry toastText = PaletteEntry(Color(0xFFDA9A00));
static PaletteEntry grey = PaletteEntry(Color(0xFF404040));
static PaletteEntry green = PaletteEntry(Color(0xFF54a286));
}
PaletteEntry
是一个const类,可以保存颜色信息,包含两个属性:
color
:返回指定的颜色。paint
:用指定的颜色创建一个新的Paint
。Paint
是一个非const类,因此,每次调用该属性时,它都会创建一个新的实例。级联突变是安全的。