如何给 Sprite 重新着色

How to recolour a Sprite

我正在尝试弄清楚如何使用 Flutter 的 Flame 引擎重新着色或 'tint' Sprite。我已尝试按照此处所述添加或覆盖 Paint 对象:.

使用下面的代码,我尝试使用不同于白色的颜色更改 Paint 对象。 alpha 确实改变了,但我的 Sprite 图像保持白色。我的源图像是一个白色的 png。

void render(Canvas c) {
  Sprite spriteImg = Sprite('someImg.png');
  rect = Rect.fromLTWH(10, 10, 20, 20);
  Paint redPaint = Paint()..color = Colors.red.withOpacity(0.5);
  spriteImg.renderRect(c, rect, overridePaint: redPaint);
}

Flame 引擎必须有办法为我没有看到或使用错误的 Sprites 着色,对吗?

您可以为此使用 ColorEffect

yourSpriteComponent
  ..add(
    ColorEffect(
      Colors.red,
      const Offset(
        0.0,
        0.5,
      ), // Means, applies from 0% to 50% of the color
      EffectController(
        duration: 1.5,
      ),
    ),
  );