Adding SpriteSheet.fromImage

This commit is contained in:
Erick Zanardo
2020-06-16 19:24:41 -03:00
parent 41129c5494
commit 642a2d7ecd
5 changed files with 90 additions and 36 deletions

View File

@ -1,54 +1,82 @@
import 'package:flutter/material.dart';
import 'package:flame/components/animation_component.dart';
import 'package:flame/components/component.dart';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flame/spritesheet.dart';
import 'package:flutter/material.dart';
import 'package:dashbook/dashbook.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final Size size = await Flame.util.initialDimensions();
final game = MyGame(size);
runApp(game.widget);
final spriteSheet = SpriteSheet(
imageName: 'spritesheet.png',
textureWidth: 16,
textureHeight: 18,
columns: 11,
rows: 2,
);
final spriteSheetFromImage = SpriteSheet.fromImage(
image: await Flame.images.load('spritesheet.png'),
textureWidth: 16,
textureHeight: 18,
columns: 11,
rows: 2,
);
final dashbook = Dashbook();
dashbook
.storiesOf('SpriteSheet')
.add('defaut', (_) => GameWrapper(MyGame(spriteSheet)))
.add('fromImage', (_) => GameWrapper(MyGame(spriteSheetFromImage)));
runApp(dashbook);
}
class GameWrapper extends StatelessWidget {
final Game game;
GameWrapper(this.game);
@override
Widget build(_) {
return Container(
width: 400,
height: 400,
child: game.widget,
);
}
}
class MyGame extends BaseGame {
MyGame(Size screenSize) {
size = screenSize;
final spritesheet = SpriteSheet(
imageName: 'spritesheet.png',
textureWidth: 16,
textureHeight: 18,
columns: 11,
rows: 2,
);
MyGame(SpriteSheet spriteSheet) {
final vampireAnimation =
spritesheet.createAnimation(0, stepTime: 0.1, to: 7);
final ghostAnimation = spritesheet.createAnimation(1, stepTime: 0.1, to: 7);
spriteSheet.createAnimation(0, stepTime: 0.1, to: 7);
final ghostAnimation = spriteSheet.createAnimation(1, stepTime: 0.1, to: 7);
final vampireComponent = AnimationComponent(80, 90, vampireAnimation);
vampireComponent.x = 150;
vampireComponent.y = 100;
final vampireComponent = AnimationComponent(80, 90, vampireAnimation)
..x = 150
..y = 100;
final ghostComponent = AnimationComponent(80, 90, ghostAnimation);
ghostComponent.x = 150;
ghostComponent.y = 220;
final ghostComponent = AnimationComponent(80, 90, ghostAnimation)
..x = 150
..y = 220;
add(vampireComponent);
add(ghostComponent);
// Some plain sprites
final vampireSpriteComponent =
SpriteComponent.fromSprite(80, 90, spritesheet.getSprite(0, 0));
vampireSpriteComponent.x = 50;
vampireSpriteComponent.y = 100;
SpriteComponent.fromSprite(80, 90, spriteSheet.getSprite(0, 0))
..x = 50
..y = 100;
final ghostSpriteComponent =
SpriteComponent.fromSprite(80, 90, spritesheet.getSprite(1, 0));
ghostSpriteComponent.x = 50;
ghostSpriteComponent.y = 220;
SpriteComponent.fromSprite(80, 90, spriteSheet.getSprite(1, 0))
..x = 50
..y = 220;
add(vampireSpriteComponent);
add(ghostSpriteComponent);