flutter - 如何在 Flutter Flame 游戏引擎中停止精灵动画
问题描述
我想渲染这张卡,第一次加载时,动画开始一次。我想要的是默认没有动画发生。有谁知道如何做到这一点?
class Card extends AnimationComponent {
Card(width, height)
: super.sequenced(width, height, 'card.png', 5,
textureWidth: 144.0, textureHeight: 220.0, loop: false);
}
class GameScreen extends BaseGame {
GameScreen({@required this.size}) {
add(Card(0,0));
}
}
解决方案
为简单起见,只要不调用update
并保持渲染,帧索引就不会更新。
void update(double dt) {
clock += dt;
elapsed += dt;
if (isSingleFrame) {
return;
}
if (!loop && isLastFrame) {
onCompleteAnimation?.call();
return;
}
while (clock > currentFrame.stepTime) {
if (!isLastFrame) {
clock -= currentFrame.stepTime;
currentIndex++;
} else if (loop) {
clock -= currentFrame.stepTime;
currentIndex = 0;
} else {
break;
}
}
}
所以你可以重写update
方法来控制精灵动画。
推荐阅读
- regex - 使用 Regex 和 VBA 提取方括号之间的数据
- python - 如何使用 optimize.minimize() 编码剂量反应 (4PL) 曲线拟合
- git - 即使目录不为空,此路径也会跳过空目录
- android - Android Studio 在格式化时更改组件的顺序
- sql - SQLSTATE [23000]:违反完整性约束:1048 列“标题”不能为空
- python - 使用 datetime.strptime 时如何提供默认时间?
- react-native - source.uri 不应为空字符串
- powerbuilder - 为什么 filemove() 不能使用相对目录
- node.js - 基于用户位置的登录表单
- sql - 分组求和