Skip to content

Instantly share code, notes, and snippets.

@timmaffett
Forked from erickzanardo/sunset_dreams.dart
Created July 4, 2022 17:02
Show Gist options
  • Save timmaffett/12f3e4fe398cadbb76d324da07861d96 to your computer and use it in GitHub Desktop.
Save timmaffett/12f3e4fe398cadbb76d324da07861d96 to your computer and use it in GitHub Desktop.
import 'dart:ui';
import 'package:flutter/material.dart' hide Gradient;
import 'package:flame/components.dart';
import 'package:flame/game.dart';
import 'package:flame/effects.dart';
class SunSegment extends RectangleComponent {
SunSegment(int i)
: super(
size: Vector2(200, 10),
position: Vector2(0, 100 + 15.0 * i),
paint: Paint()..color = Colors.orange,
);
void _addMove() {
add(
MoveEffect.to(
Vector2(0, 185),
SpeedEffectController(LinearEffectController(.5), speed: 15),
)..onComplete = () {
y = 100;
_addMove();
},
);
}
@override
Future<void> onLoad() async => _addMove();
}
class ClipComponent extends PositionComponent {
ClipComponent.circle(
{super.position, super.size, super.anchor, super.children});
late Path _path;
@override
Future<void> onLoad() async => _path = Path()..addOval(size.toRect());
@override
void render(Canvas canvas) => canvas.clipPath(_path);
}
void main() {
runApp(
GameWidget(
game: FlameGame(
children: [
RectangleComponent(
size: Vector2(600, 300),
paint: Paint()
..shader = Gradient.linear(
const Offset(0, 0),
const Offset(0, 300),
[Colors.pink, Colors.orange],
),
),
RectangleComponent(
position: Vector2(0, 300),
size: Vector2(600, 300),
paint: Paint()
..shader = Gradient.linear(
const Offset(0, 0),
const Offset(0, 300),
[Colors.orange, Colors.blue],
),
),
ClipComponent.circle(
position: Vector2(200, 200),
size: Vector2(200, 200),
children: [
RectangleComponent(
size: Vector2(200, 100),
paint: Paint()
..shader = Gradient.linear(
const Offset(0, 50),
const Offset(0, 100),
[Colors.yellow, Colors.orange],
),
),
for (var i = 1; i < 7; i++) SunSegment(i),
],
),
],
),
),
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment