test_drawatlas.dart 1.76 KB
Newer Older
1 2 3 4 5 6
import 'dart:sky';

import 'package:sky/mojo/asset_bundle.dart';
import 'package:sky/rendering/object.dart';
import 'package:sky/theme/colors.dart' as colors;
import 'package:sky/widgets/basic.dart';
7
import 'package:sky/widgets.dart';
8
import 'package:skysprites/skysprites.dart';
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

AssetBundle _initBundle() {
  if (rootBundle != null)
    return rootBundle;
  return new NetworkAssetBundle(Uri.base);
}

final AssetBundle _bundle = _initBundle();

ImageMap _images;
SpriteSheet _spriteSheet;
TestDrawAtlasApp _app;

main() async {
  _images = new ImageMap(_bundle);

  await _images.load([
    'assets/sprites.png'
  ]);

  String json = await _bundle.loadString('assets/sprites.json');
  _spriteSheet = new SpriteSheet(_images['assets/sprites.png'], json);

  _app = new TestDrawAtlasApp();
  runApp(_app);
}

class TestDrawAtlasApp extends App {

  Widget build() {
    ThemeData theme = new ThemeData(
      brightness: ThemeBrightness.light,
      primarySwatch: colors.Purple
    );

    return new Theme(
      data: theme,
46 47
      child: new Title(
        title: 'Test drawAtlas',
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
        child: new SpriteWidget(
          new TestDrawAtlas(),
          SpriteBoxTransformMode.fixedWidth
        )
      )
    );
  }
}

class TestDrawAtlas extends NodeWithSize {
  TestDrawAtlas() : super(new Size(1024.0, 1024.0)) {
  }

  void paint(PaintingCanvas canvas) {
    List<RSTransform> transforms = [
      new RSTransform(1.0, 0.0, 100.0, 100.0)
    ];
    List<Rect> rects = [
      _spriteSheet["ship.png"].frame
    ];
    List<Color> colors = [
      new Color(0xffffffff)
    ];

    canvas.drawAtlas(
      _spriteSheet.image,
      transforms,
      rects,
      colors,
      TransferMode.src,
      null,
      new Paint()..setFilterQuality(FilterQuality.low)..isAntiAlias=false
    );
  }
}