mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-03 04:18:25 +08:00
feat: Expose paint from svgComponent to set opacity and have opacity effects (#2092)
This commit is contained in:
@ -41,14 +41,19 @@ class Svg {
|
||||
}
|
||||
|
||||
/// Renders the svg on the [canvas] using the dimensions provided by [size].
|
||||
void render(Canvas canvas, Vector2 size) {
|
||||
void render(
|
||||
Canvas canvas,
|
||||
Vector2 size, {
|
||||
Paint? overridePaint,
|
||||
}) {
|
||||
final _size = size.toSize();
|
||||
final image = _getImage(_size);
|
||||
|
||||
if (image != null) {
|
||||
canvas.save();
|
||||
canvas.scale(1 / pixelRatio);
|
||||
canvas.drawImage(image, Offset.zero, _paint);
|
||||
final drawPaint = overridePaint ?? _paint;
|
||||
canvas.drawImage(image, Offset.zero, drawPaint);
|
||||
canvas.restore();
|
||||
} else {
|
||||
_render(canvas, _size);
|
||||
|
||||
@ -4,7 +4,7 @@ import 'package:flame/components.dart';
|
||||
import 'package:flame_svg/svg.dart';
|
||||
|
||||
/// Wraps [Svg] in a Flame component.
|
||||
class SvgComponent extends PositionComponent {
|
||||
class SvgComponent extends PositionComponent with HasPaint {
|
||||
/// The wrapped instance of [Svg].
|
||||
Svg? _svg;
|
||||
|
||||
@ -18,7 +18,10 @@ class SvgComponent extends PositionComponent {
|
||||
super.anchor,
|
||||
super.children,
|
||||
super.priority,
|
||||
}) : _svg = svg;
|
||||
Paint? paint,
|
||||
}) : _svg = svg {
|
||||
this.paint = paint ?? this.paint;
|
||||
}
|
||||
|
||||
set svg(Svg? svg) {
|
||||
_svg?.dispose();
|
||||
@ -30,7 +33,7 @@ class SvgComponent extends PositionComponent {
|
||||
|
||||
@override
|
||||
void render(Canvas canvas) {
|
||||
_svg?.render(canvas, size);
|
||||
_svg?.render(canvas, size, overridePaint: paint);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user