Index: sky/examples/game/lib/sprite_node.dart |
diff --git a/sky/examples/game/lib/sprite_node.dart b/sky/examples/game/lib/sprite_node.dart |
index ca6296a82d133880872b01accd2b8af498951110..406a3f4ab442a98a546e816a7af5dc5c21767e8f 100644 |
--- a/sky/examples/game/lib/sprite_node.dart |
+++ b/sky/examples/game/lib/sprite_node.dart |
@@ -6,6 +6,9 @@ class SpriteNode extends TransformNode { |
Image _image; |
bool constrainProportions = false; |
+ double _opacity = 1.0; |
+ Color colorOverlay; |
+ TransferMode transferMode; |
SpriteNode() { |
this.pivot = new Vector2(0.5, 0.5); |
@@ -15,7 +18,14 @@ class SpriteNode extends TransformNode { |
this.pivot = new Vector2(0.5, 0.5); |
_image = image; |
} |
- |
+ |
+ double get opacity => _opacity; |
+ |
+ void set opacity(double opacity) { |
+ assert(opacity >= 0.0 && opacity <= 1.0); |
+ _opacity = opacity; |
+ } |
+ |
void paint(PictureRecorder canvas) { |
if (_image != null && _image.width > 0 && _image.height > 0) { |
@@ -37,7 +47,18 @@ class SpriteNode extends TransformNode { |
} |
canvas.scale(scaleX, scaleY); |
- canvas.drawImage(_image, 0.0, 0.0, new Paint()..setARGB(255, 255, 255, 255)); |
+ |
+ // Setup paint object for opacity and transfer mode |
+ Paint paint = new Paint(); |
+ paint.setARGB((255.0*_opacity).toInt(), 255, 255, 255); |
+ if (colorOverlay != null) { |
+ paint.setColorFilter(new ColorFilter(colorOverlay, TransferMode.srcATopMode)); |
+ } |
+ if (transferMode != null) { |
+ paint.setTransferMode(transferMode); |
+ } |
+ |
+ canvas.drawImage(_image, 0.0, 0.0, paint); |
canvas.restore(); |
} |
else { |