flutter/examples/game/test_drawatlas.dart
Adam Barth 693ddcd8dd Move widgets and rendering inside src
Code outside of package:sky should import this code using

package:sky/rendering.dart
package:sky/widgets.dart

Moving this code into the "src" directory is a convention that signifies that
and it cleans up the generated dartdoc because the libraries in the src
directory aren't included in the generated documentation. Instead, the classes
are documented in the widgets.dart and rendering.dart libraries.
2015-09-02 13:38:00 -07:00

82 lines
1.7 KiB
Dart

import 'dart:sky';
import 'package:sky/mojo/asset_bundle.dart';
import 'package:sky/rendering.dart';
import 'package:sky/theme/colors.dart' as colors;
import 'package:sky/widgets.dart';
import 'package:skysprites/skysprites.dart';
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,
child: new Title(
title: 'Test drawAtlas',
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
);
}
}