【发布时间】:2021-02-14 09:40:41
【问题描述】:
我正在尝试开发一个带有 Flutter 和 Flame 的小型 2d 平台游戏,但我已经陷入重构代码的困境......
我想尽可能多地放在单独的类和背景中(视差效果)。这是我的主文件的一部分,包含效果。
class PlatformGame extends BaseGame with TapDetector {
Player _player;
ParallaxComponent _parallaxComponent;
Size screenSize;
double tileSize;
PlatformGame() {
_parallaxComponent = ParallaxComponent(
[
ParallaxImage('bg/bg1.png', fill: LayerFill.height),
ParallaxImage('bg/bg2.png'),
ParallaxImage('bg/bg3.png'),
ParallaxImage('bg/bg4.png'),
ParallaxImage('bg/bg5.png'),
ParallaxImage('bg/bg6.png', fill: LayerFill.none),
],
baseSpeed: Offset(100, 0),
layerDelta: Offset(20, 0),
);
add(_parallaxComponent);
_player = Player();
add(_player);
}
}
我尝试创建一个名为“background”的新类并将所有代码移到那里。
class Background extends ParallaxComponent {
Background(List<ParallaxImage> images) : super(images) {
//Here should be the Images for the parallax
}
}
但我被困在那里。无论我尝试什么,我总是会出错。显然,我无法正确处理构造函数。我读了很多,但没有得到任何想法。有人可以帮帮我吗?
播放器在一个单独的类中并且工作正常。
谢谢 马丁
【问题讨论】:
-
为什么需要括号?我的意思是,你想在他们里面实现什么?
-
我想,我必须在括号内插入所有参数(视差图像和速度参数)。我错了吗?
-
我想将有关视差效果的行从主文件移动到单独的类。我认为它应该进入构造函数。
-
我认为你可以为你的构造函数写这个:
Background(List<ParallaxImage> images) : super(images, baseSpeed: Offset(100, 0), layerDelta: Offset(20, 0)); -
不客气。我添加了一个答案,如果它解决了您的问题,您可以将其标记为已接受