Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
32359d4b
Commit
32359d4b
authored
Aug 10, 2015
by
Viktor Lidholt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactors Sprite class to use SpritePaint mix-in for setting paint properties
parent
e4b8d8a8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
36 deletions
+45
-36
node_with_size.dart
examples/game/lib/node_with_size.dart
+2
-2
sprite.dart
examples/game/lib/sprite.dart
+43
-34
No files found.
examples/game/lib/node_with_size.dart
View file @
32359d4b
...
...
@@ -21,9 +21,9 @@ class NodeWithSize extends Node {
/// The default [size] is zero and the default [pivot] point is the origin. Subclasses may change the default values.
///
/// var myNodeWithSize = new NodeWithSize(new Size(1024.0, 1024.0));
NodeWithSize
(
[
Size
this
.
size
,
Point
this
.
pivot
]
)
{
NodeWithSize
(
Size
this
.
size
)
{
if
(
size
==
null
)
size
=
Size
.
zero
;
if
(
pivot
==
null
)
pivot
=
Point
.
origin
;
pivot
=
Point
.
origin
;
}
/// Call this method in your [paint] method if you want the origin of your drawing to be the top left corner of the
...
...
examples/game/lib/sprite.dart
View file @
32359d4b
part of
sprites
;
/// A Sprite is a [Node] that renders a bitmap image to the screen.
class
Sprite
extends
NodeWithSize
{
class
Sprite
extends
NodeWithSize
with
SpritePaint
{
/// The texture that the sprite will render to screen.
///
...
...
@@ -15,19 +15,6 @@ class Sprite extends NodeWithSize {
///
/// mySprite.constrainProportions = true;
bool
constrainProportions
=
false
;
double
_opacity
=
1.0
;
/// The color to draw on top of the sprite, null if no color overlay is used.
///
/// // Color the sprite red
/// mySprite.colorOverlay = new Color(0x77ff0000);
Color
colorOverlay
;
/// The transfer mode used when drawing the sprite to screen.
///
/// // Add the colors of the sprite with the colors of the background
/// mySprite.transferMode = TransferMode.plusMode;
TransferMode
transferMode
;
Paint
_cachedPaint
=
new
Paint
()
..
setFilterQuality
(
FilterQuality
.
low
)
...
...
@@ -36,7 +23,7 @@ class Sprite extends NodeWithSize {
/// Creates a new sprite from the provided [texture].
///
/// var mySprite = new Sprite(myTexture)
Sprite
([
this
.
texture
])
{
Sprite
([
this
.
texture
])
:
super
(
Size
.
zero
)
{
if
(
texture
!=
null
)
{
size
=
texture
.
size
;
pivot
=
texture
.
pivot
;
...
...
@@ -48,7 +35,7 @@ class Sprite extends NodeWithSize {
/// Creates a new sprite from the provided [image].
///
/// var mySprite = new Sprite.fromImage(myImage);
Sprite
.
fromImage
(
Image
image
)
{
Sprite
.
fromImage
(
Image
image
)
:
super
(
Size
.
zero
)
{
assert
(
image
!=
null
);
texture
=
new
Texture
(
image
);
...
...
@@ -57,17 +44,6 @@ class Sprite extends NodeWithSize {
pivot
=
new
Point
(
0.5
,
0.5
);
}
/// The opacity of the sprite in the range 0.0 to 1.0.
///
/// mySprite.opacity = 0.5;
double
get
opacity
=>
_opacity
;
void
set
opacity
(
double
opacity
)
{
assert
(
opacity
!=
null
);
assert
(
opacity
>=
0.0
&&
opacity
<=
1.0
);
_opacity
=
opacity
;
}
void
paint
(
PaintingCanvas
canvas
)
{
// Account for pivot point
applyTransformForPivot
(
canvas
);
...
...
@@ -95,13 +71,7 @@ class Sprite extends NodeWithSize {
canvas
.
scale
(
scaleX
,
scaleY
);
// Setup paint object for opacity and transfer mode
_cachedPaint
.
color
=
new
Color
.
fromARGB
((
255.0
*
_opacity
).
toInt
(),
255
,
255
,
255
);
if
(
colorOverlay
!=
null
)
{
_cachedPaint
.
setColorFilter
(
new
ColorFilter
.
mode
(
colorOverlay
,
TransferMode
.
srcATop
));
}
if
(
transferMode
!=
null
)
{
_cachedPaint
.
setTransferMode
(
transferMode
);
}
_updatePaint
(
_cachedPaint
);
// Do actual drawing of the sprite
texture
.
drawTexture
(
canvas
,
Point
.
origin
,
_cachedPaint
);
...
...
@@ -112,3 +82,42 @@ class Sprite extends NodeWithSize {
}
}
}
abstract
class
SpritePaint
{
double
_opacity
=
1.0
;
/// The opacity of the sprite in the range 0.0 to 1.0.
///
/// mySprite.opacity = 0.5;
double
get
opacity
=>
_opacity
;
void
set
opacity
(
double
opacity
)
{
assert
(
opacity
!=
null
);
assert
(
opacity
>=
0.0
&&
opacity
<=
1.0
);
_opacity
=
opacity
;
}
/// The color to draw on top of the sprite, null if no color overlay is used.
///
/// // Color the sprite red
/// mySprite.colorOverlay = new Color(0x77ff0000);
Color
colorOverlay
;
/// The transfer mode used when drawing the sprite to screen.
///
/// // Add the colors of the sprite with the colors of the background
/// mySprite.transferMode = TransferMode.plusMode;
TransferMode
transferMode
;
void
_updatePaint
(
Paint
paint
)
{
paint
.
color
=
new
Color
.
fromARGB
((
255.0
*
_opacity
).
toInt
(),
255
,
255
,
255
);
if
(
colorOverlay
!=
null
)
{
_cachedPaint
.
setColorFilter
(
new
ColorFilter
.
mode
(
colorOverlay
,
TransferMode
.
srcATop
));
}
if
(
transferMode
!=
null
)
{
_cachedPaint
.
setTransferMode
(
transferMode
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment