Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Unified Diff: sky/examples/game/lib/sprite_box.dart

Issue 1149183004: Sky example game enhancements, adds preloading of images and adds transform modes to SpriteBox (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Fixes setting parameter with sugar Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/game/lib/image_map.dart ('k') | sky/examples/game/lib/sprites.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/game/lib/sprite_box.dart
diff --git a/sky/examples/game/lib/sprite_box.dart b/sky/examples/game/lib/sprite_box.dart
index 4cc0834ce37ccc39e79adedd2cf035c07d7f0f6b..5658dbd5b34fe0050f9b85057e86bb0bf264e836 100644
--- a/sky/examples/game/lib/sprite_box.dart
+++ b/sky/examples/game/lib/sprite_box.dart
@@ -19,8 +19,8 @@ class SpriteBox extends RenderBox {
int _numFrames = 0;
SpriteBoxTransformMode transformMode;
- double systemWidth;
- double systemHeight;
+ double _systemWidth;
+ double _systemHeight;
SpriteBox(TransformNode rootNode, [SpriteBoxTransformMode mode = SpriteBoxTransformMode.nativePoints, double width=1024.0, double height=1024.0]) {
// Setup root node
@@ -28,12 +28,15 @@ class SpriteBox extends RenderBox {
// Setup transform mode
transformMode = mode;
- systemWidth = width;
- systemHeight = height;
+ _systemWidth = width;
+ _systemHeight = height;
_scheduleTick();
}
+ double get systemWidth => _systemWidth;
+ double get systemHeight => _systemHeight;
+
void performLayout() {
size = constraints.constrain(new Size.infinite());
}
@@ -55,21 +58,44 @@ class SpriteBox extends RenderBox {
switch(transformMode) {
case SpriteBoxTransformMode.stretch:
- scaleX = size.width/systemWidth;
- scaleY = size.height/systemHeight;
+ scaleX = size.width/_systemWidth;
+ scaleY = size.height/_systemHeight;
break;
case SpriteBoxTransformMode.letterbox:
- scaleX = size.width/systemWidth;
- scaleY = size.height/systemHeight;
+ scaleX = size.width/_systemWidth;
+ scaleY = size.height/_systemHeight;
if (scaleX > scaleY) {
scaleY = scaleX;
- offsetY = (size.height - scaleY * systemHeight)/2.0;
+ offsetY = (size.height - scaleY * _systemHeight)/2.0;
}
else {
scaleX = scaleY;
- offsetX = (size.width - scaleX * systemWidth)/2.0;
+ offsetX = (size.width - scaleX * _systemWidth)/2.0;
}
break;
+ case SpriteBoxTransformMode.scaleToFit:
+ scaleX = size.width/_systemWidth;
+ scaleY = size.height/_systemHeight;
+ if (scaleX < scaleY) {
+ scaleY = scaleX;
+ offsetY = (size.height - scaleY * _systemHeight)/2.0;
+ }
+ else {
+ scaleX = scaleY;
+ offsetX = (size.width - scaleX * _systemWidth)/2.0;
+ }
+ break;
+ case SpriteBoxTransformMode.fixedWidth:
+ scaleX = size.width/_systemWidth;
+ scaleY = scaleX;
+ _systemHeight = size.height/scaleX;
+ print("systemHeight: $_systemHeight");
+ break;
+ case SpriteBoxTransformMode.fixedHeight:
+ scaleY = size.height/_systemHeight;
+ scaleX = scaleY;
+ _systemWidth = size.width/scaleY;
+ break;
case SpriteBoxTransformMode.nativePoints:
break;
default:
« no previous file with comments | « sky/examples/game/lib/image_map.dart ('k') | sky/examples/game/lib/sprites.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698