mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 19:12:31 +08:00
Default srcSize
This commit is contained in:
@ -15,7 +15,7 @@ SpriteAnimation _animation;
|
|||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
final image = await Flame.images.load('minotaur.png');
|
final image = await Flame.images.load('minotaur.png');
|
||||||
_sprite = Sprite(image, size: Vector2.all(96));
|
_sprite = Sprite(image, srcSize: Vector2.all(96));
|
||||||
|
|
||||||
final _animationSpriteSheet = SpriteSheet(
|
final _animationSpriteSheet = SpriteSheet(
|
||||||
image: image,
|
image: image,
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class Selector extends SpriteComponent {
|
|||||||
|
|
||||||
Selector(double s, Image image)
|
Selector(double s, Image image)
|
||||||
: super.fromSprite(
|
: super.fromSprite(
|
||||||
Vector2.all(s), Sprite(image, size: Vector2.all(32.0)));
|
Vector2.all(s), Sprite(image, srcSize: Vector2.all(32.0)));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void render(Canvas canvas) {
|
void render(Canvas canvas) {
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class IsometricTileset {
|
|||||||
final j = tileId ~/ columns;
|
final j = tileId ~/ columns;
|
||||||
final s = size.toDouble();
|
final s = size.toDouble();
|
||||||
return Sprite(tileset,
|
return Sprite(tileset,
|
||||||
srcPosition: Vector2(s * i, s * j), size: Vector2.all(s));
|
srcPosition: Vector2(s * i, s * j), srcSize: Vector2.all(s));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,9 +12,9 @@ class Sprite {
|
|||||||
Sprite(
|
Sprite(
|
||||||
this.image, {
|
this.image, {
|
||||||
Vector2 srcPosition,
|
Vector2 srcPosition,
|
||||||
Vector2 size,
|
Vector2 srcSize,
|
||||||
}) : assert(image != null, "image can't be null") {
|
}) : assert(image != null, "image can't be null") {
|
||||||
size ??= Vector2(image.width.toDouble(), image.height.toDouble());
|
this.srcSize = srcSize;
|
||||||
this.srcPosition = srcPosition;
|
this.srcPosition = srcPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,7 +26,12 @@ class Sprite {
|
|||||||
|
|
||||||
Vector2 get srcSize => Vector2(src.width, src.height);
|
Vector2 get srcSize => Vector2(src.width, src.height);
|
||||||
|
|
||||||
Vector2 get srcPosition => src.topLeft.toVector2();
|
set srcSize(Vector2 size) {
|
||||||
|
size ??= Vector2(image.width.toDouble(), image.height.toDouble());
|
||||||
|
src = (srcPosition ?? Vector2.zero()).toPositionedRect(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 get srcPosition => (src?.topLeft ?? Offset.zero).toVector2();
|
||||||
|
|
||||||
set srcPosition(Vector2 position) {
|
set srcPosition(Vector2 position) {
|
||||||
src = (position ?? Vector2.zero()).toPositionedRect(srcSize);
|
src = (position ?? Vector2.zero()).toPositionedRect(srcSize);
|
||||||
@ -43,8 +48,12 @@ class Sprite {
|
|||||||
double scale = 1.0,
|
double scale = 1.0,
|
||||||
Paint overridePaint,
|
Paint overridePaint,
|
||||||
}) {
|
}) {
|
||||||
renderPosition(canvas, p,
|
renderPosition(
|
||||||
size: srcSize * scale, overridePaint: overridePaint);
|
canvas,
|
||||||
|
p,
|
||||||
|
size: srcSize * scale,
|
||||||
|
overridePaint: overridePaint,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderPosition(
|
void renderPosition(
|
||||||
@ -53,7 +62,7 @@ class Sprite {
|
|||||||
Vector2 size,
|
Vector2 size,
|
||||||
Paint overridePaint,
|
Paint overridePaint,
|
||||||
}) {
|
}) {
|
||||||
size ??= this.srcSize;
|
size ??= srcSize;
|
||||||
renderRect(canvas, p.toPositionedRect(size), overridePaint: overridePaint);
|
renderRect(canvas, p.toPositionedRect(size), overridePaint: overridePaint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +71,7 @@ class Sprite {
|
|||||||
Vector2 size,
|
Vector2 size,
|
||||||
Paint overridePaint,
|
Paint overridePaint,
|
||||||
}) {
|
}) {
|
||||||
size ??= this.srcSize;
|
size ??= srcSize;
|
||||||
renderRect(canvas, size.toRect(), overridePaint: overridePaint);
|
renderRect(canvas, size.toRect(), overridePaint: overridePaint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +85,7 @@ class Sprite {
|
|||||||
Vector2 size,
|
Vector2 size,
|
||||||
Paint overridePaint,
|
Paint overridePaint,
|
||||||
}) {
|
}) {
|
||||||
size ??= this.srcSize;
|
size ??= srcSize;
|
||||||
renderRect(
|
renderRect(
|
||||||
canvas,
|
canvas,
|
||||||
(p - size / 2).toPositionedRect(size),
|
(p - size / 2).toPositionedRect(size),
|
||||||
|
|||||||
@ -109,7 +109,7 @@ class SpriteAnimation {
|
|||||||
final Sprite sprite = Sprite(
|
final Sprite sprite = Sprite(
|
||||||
image,
|
image,
|
||||||
srcPosition: position,
|
srcPosition: position,
|
||||||
size: textureSize,
|
srcSize: textureSize,
|
||||||
);
|
);
|
||||||
frames[i] = SpriteAnimationFrame(sprite, stepTimes[i]);
|
frames[i] = SpriteAnimationFrame(sprite, stepTimes[i]);
|
||||||
}
|
}
|
||||||
@ -138,7 +138,7 @@ class SpriteAnimation {
|
|||||||
final Sprite sprite = Sprite(
|
final Sprite sprite = Sprite(
|
||||||
image,
|
image,
|
||||||
srcPosition: Vector2Extension.fromInts(x, y),
|
srcPosition: Vector2Extension.fromInts(x, y),
|
||||||
size: Vector2Extension.fromInts(width, height),
|
srcSize: Vector2Extension.fromInts(width, height),
|
||||||
);
|
);
|
||||||
|
|
||||||
return SpriteAnimationFrame(sprite, stepTime);
|
return SpriteAnimationFrame(sprite, stepTime);
|
||||||
|
|||||||
@ -42,7 +42,7 @@ class SpriteSheet {
|
|||||||
return Sprite(
|
return Sprite(
|
||||||
image,
|
image,
|
||||||
srcPosition: Vector2(x.toDouble(), y.toDouble())..multiply(size),
|
srcPosition: Vector2(x.toDouble(), y.toDouble())..multiply(size),
|
||||||
size: size,
|
srcSize: size,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ class _Painter extends widgets.CustomPainter {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Sprite _getSpriteTile(double x, double y) =>
|
Sprite _getSpriteTile(double x, double y) =>
|
||||||
Sprite(image, srcPosition: Vector2(x, y), size: Vector2.all(tileSize));
|
Sprite(image, srcPosition: Vector2(x, y), srcSize: Vector2.all(tileSize));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void paint(Canvas canvas, Size size) {
|
void paint(Canvas canvas, Size size) {
|
||||||
|
|||||||
Reference in New Issue
Block a user