mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-02 20:13:50 +08:00
Add example for rotational effect
This commit is contained in:
@ -1,9 +1,12 @@
|
||||
import 'package:flame/effects/move_effect.dart';
|
||||
import 'package:flame/effects/scale_effect.dart';
|
||||
import 'package:flame/effects/rotational_effect.dart';
|
||||
import 'package:flame/gestures.dart';
|
||||
import 'package:flame/position.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flame/flame.dart';
|
||||
import 'package:flame/game.dart';
|
||||
import './square.dart';
|
||||
@ -17,21 +20,29 @@ void main() async {
|
||||
class MyGame extends BaseGame with TapDetector {
|
||||
Square greenSquare;
|
||||
Square redSquare;
|
||||
Square orangeSquare;
|
||||
|
||||
MyGame() {
|
||||
final green = Paint()..color = const Color(0xAA338833);
|
||||
final red = Paint()..color = const Color(0xAA883333);
|
||||
final orange = Paint()..color = const Color(0xAABB6633);
|
||||
greenSquare = Square(green, 100, 100);
|
||||
redSquare = Square(red, 200, 200);
|
||||
orangeSquare = Square(orange, 200, 400);
|
||||
add(greenSquare);
|
||||
add(redSquare);
|
||||
add(orangeSquare);
|
||||
}
|
||||
|
||||
@override
|
||||
void onTapUp(details) {
|
||||
greenSquare.clearEffects();
|
||||
final dx = details.localPosition.dx;
|
||||
final dy = details.localPosition.dy;
|
||||
|
||||
greenSquare.clearEffects();
|
||||
redSquare.clearEffects();
|
||||
orangeSquare.clearEffects();
|
||||
|
||||
greenSquare.addEffect(MoveEffect(
|
||||
destination: Position(dx, dy),
|
||||
speed: 250.0,
|
||||
@ -39,7 +50,7 @@ class MyGame extends BaseGame with TapDetector {
|
||||
isInfinite: true,
|
||||
isAlternating: true,
|
||||
));
|
||||
redSquare.clearEffects();
|
||||
|
||||
redSquare.addEffect(ScaleEffect(
|
||||
size: Size(dx, dy),
|
||||
speed: 250.0,
|
||||
@ -47,5 +58,13 @@ class MyGame extends BaseGame with TapDetector {
|
||||
isInfinite: true,
|
||||
isAlternating: true,
|
||||
));
|
||||
|
||||
orangeSquare.addEffect(RotationalEffect(
|
||||
rotation: (dx + dy) % (2 * pi),
|
||||
speed: 1.0,
|
||||
curve: Curves.easeInOut,
|
||||
isInfinite: true,
|
||||
isAlternating: true,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user