首页 > 解决方案 > 为什么当我点击它时状态不会变为“已点击”(颤动 - 飞镖)?

问题描述

我正在尝试制作一个钢琴瓷砖游戏(颤振 - 飞镖),我刚刚随机化了瓷砖。但是,游戏无法运行。我点击的第一个音符的状态不是“点击”状态,但歌曲已经开始播放(参见下面的代码)。我已经导入了所有必要的包,所以这不是问题。我也没有得到任何类型的颤振错误。

这是随机化瓷砖的新代码。当我对瓷砖进行硬编码时,游戏确实有效。

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,
      ),
    );
  }

有人可以帮帮我吗?我不知道出了什么问题。

标签: flutterdart

解决方案


推荐阅读