flutter - 为什么当我点击它时状态不会变为“已点击”(颤动 - 飞镖)?
问题描述
我正在尝试制作一个钢琴瓷砖游戏(颤振 - 飞镖),我刚刚随机化了瓷砖。但是,游戏无法运行。我点击的第一个音符的状态不是“点击”状态,但歌曲已经开始播放(参见下面的代码)。我已经导入了所有必要的包,所以这不是问题。我也没有得到任何类型的颤振错误。
这是随机化瓷砖的新代码。当我对瓷砖进行硬编码时,游戏确实有效。
final number = new List<int>.generate(300, (i) => i + 1);
var rng = new Random();
final place = new List.generate(300, (_) => rng.nextInt(3));
final noteListStart = new List<Note>.generate(number.length, (i) => Note(number[i],place[i]));
final List<Note> noteListEnd = [
Note(300, -1), Note(301, -1),Note(302, -1),Note(303, -1)
];
final initList = List<Note>.from(noteListStart)..addAll(noteListEnd);
List<Note> initNotes() {
return
initList;
}
List<Note> notes = initNotes(); // already declared in a previous class
void _onTap(Note note) {
bool areAllPreviousTapped = notes
.sublist(0, note.orderNumber)
.every((n) => n.state == NoteState.tapped);
print(areAllPreviousTapped);
if (currentNoteIndex == 0) {
audioCache.play('TheForce.mp3');
}
if (areAllPreviousTapped) {
if (!hasStarted) {
setState(() => hasStarted = true);
animationController.forward();
}
setState(() {
note.state = NoteState.tapped; // the .tapped is declared in another class
++points;
});
}
}
我调用 _onTap 的代码:
_drawLine(int lineNumber) {
return Expanded(
child: Line(
lineNumber: lineNumber,
currentNotes: notes.sublist(currentNoteIndex, currentNoteIndex + 5),
onTileTap: _onTap,
animation: animationController,
),
);
}
有人可以帮帮我吗?我不知道出了什么问题。
解决方案
推荐阅读
- python - 在 django 用户更改表单中更改图像
- visual-studio-code - 虚幻引擎开发使用 vscode 不使用 vs2019, 2017
- dataframe - 将数据框 pyspark 中的列与空值连接起来
- c# - 在 try catch 块中向用户显示 net core web 应用程序中的错误
- bash - 使用 Bash 脚本为循环和 if 测试创建文件
- python-3.x - Discord.py 查看用户是否在语音通话
- html - 使用单击按钮进行网页抓取
- java - 为 POST 调用接收 HttpClientErrorException 时缺少 ResponseBodyAsString
- windows - 在 VMware 虚拟机上运行时如何获取当前的 Windows 操作系统版本?
- sql - 如何通过查看源中的另一列是否具有特定值来填充列,然后将其设置为单个值