mirror of
https://github.com/flame-engine/flame.git
synced 2025-10-30 08:27:36 +08:00
110 lines
3.3 KiB
Dart
110 lines
3.3 KiB
Dart
import 'package:flutter/material.dart' hide Animation;
|
|
import 'package:flame/flame.dart';
|
|
import 'package:flame/sprite.dart';
|
|
import 'package:flame/spritesheet.dart';
|
|
import 'package:dashbook/dashbook.dart';
|
|
|
|
import 'package:flame/widgets/nine_tile_box.dart';
|
|
import 'package:flame/widgets/sprite_button.dart';
|
|
import 'package:flame/widgets/sprite_widget.dart';
|
|
import 'package:flame/widgets/animation_widget.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
final dashbook = Dashbook();
|
|
|
|
final nineTileBoxImage = await Flame.images.load('nine_tile_box.png');
|
|
dashbook.storiesOf('NineTileBox').decorator(CenterDecorator()).add(
|
|
'default',
|
|
(ctx) => Container(
|
|
width: ctx.numberProperty('width', 200),
|
|
height: ctx.numberProperty('height', 200),
|
|
child: NineTileBox(
|
|
image: nineTileBoxImage,
|
|
tileSize: 16,
|
|
destTileSize: 50,
|
|
child: const Center(
|
|
child: const Text(
|
|
'Cool label',
|
|
style: const TextStyle(
|
|
color: const Color(0xFFFFFFFF),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
));
|
|
|
|
await Flame.images.load('buttons.png');
|
|
final _buttons = SpriteSheet(
|
|
imageName: 'buttons.png',
|
|
textureHeight: 20,
|
|
textureWidth: 60,
|
|
columns: 1,
|
|
rows: 2,
|
|
);
|
|
dashbook.storiesOf('SpriteButton').decorator(CenterDecorator()).add(
|
|
'default',
|
|
(ctx) => Container(
|
|
padding: const EdgeInsets.all(20),
|
|
child: SpriteButton(
|
|
onPressed: () {
|
|
print('Pressed');
|
|
},
|
|
label: const Text(
|
|
'Sprite Button',
|
|
style: const TextStyle(color: const Color(0xFF5D275D)),
|
|
),
|
|
sprite: _buttons.getSprite(0, 0),
|
|
pressedSprite: _buttons.getSprite(1, 0),
|
|
width: ctx.numberProperty('width', 250),
|
|
height: ctx.numberProperty('height', 75),
|
|
),
|
|
),
|
|
);
|
|
|
|
final shieldSprite = await Sprite.loadSprite('shield.png');
|
|
dashbook.storiesOf('SpriteWidget').decorator(CenterDecorator()).add(
|
|
'default',
|
|
(ctx) => Container(
|
|
width: ctx.numberProperty('container width', 400),
|
|
height: ctx.numberProperty('container height', 200),
|
|
padding: const EdgeInsets.all(20),
|
|
child: SpriteWidget(
|
|
sprite: shieldSprite,
|
|
center: ctx.boolProperty('center', true),
|
|
),
|
|
),
|
|
);
|
|
|
|
await Flame.images.load('bomb_ptero.png');
|
|
final _animationSpriteSheet = SpriteSheet(
|
|
imageName: 'bomb_ptero.png',
|
|
textureHeight: 32,
|
|
textureWidth: 48,
|
|
columns: 4,
|
|
rows: 1,
|
|
);
|
|
final _animation = _animationSpriteSheet.createAnimation(
|
|
0,
|
|
stepTime: 0.2,
|
|
to: 3,
|
|
loop: true,
|
|
);
|
|
dashbook.storiesOf('AnimationWidget').decorator(CenterDecorator()).add(
|
|
'default',
|
|
(ctx) => Container(
|
|
width: ctx.numberProperty('container width', 400),
|
|
height: ctx.numberProperty('container height', 200),
|
|
padding: const EdgeInsets.all(20),
|
|
child: AnimationWidget(
|
|
animation: _animation,
|
|
play: ctx.boolProperty('playing', true),
|
|
center: ctx.boolProperty('center', true),
|
|
),
|
|
),
|
|
);
|
|
|
|
runApp(dashbook);
|
|
}
|