我正在尝试制作一个钢琴方块游戏(颤音-飞镖),我只是随机化了这些方块。但是,该游戏无法正常工作。我点击的第一个音符的状态没有变为“已轻按”状态,但歌曲已开始播放(请参见下面的代码)。我已经导入了所有必需的软件包,所以这不是问题。我也没有得到任何形式的抖动错误。
这是用于随机分配图块的新代码。当我对图块进行硬编码后,游戏就可以正常工作。
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,
),
);
}
有人可以帮助我吗?我不知道出了什么问题。