예제 #1
0
 void OnPlayButtonClicked()
 {
     if (state == MidiPageState.Playback)
     {
         state     = MidiPageState.None;
         startTime = playbackPos;
         playButton.GetComponentInChildren <Text>().text = "播放";
     }
     else if (state == MidiPageState.None)
     {
         absoluteStartTime = Time.time;
         state             = MidiPageState.Playback;
         playButton.GetComponentInChildren <Text>().text = "暂停";
     }
 }
예제 #2
0
    private void Update()
    {
        if (state == MidiPageState.Playback)
        {
            playbackPos = Time.time - absoluteStartTime + startTime;
            if (playbackPos >= endTime)
            {
                state       = MidiPageState.None;
                playbackPos = startTime = selectStartTime;
                curNote     = FindNote(startTime);
                playbackTick.anchoredPosition = new Vector2(ContentStart + startTime * lengthPerSec, 0);
                playButton.GetComponentInChildren <Text>().text = "播放";
            }
            else
            {
                playbackTick.anchoredPosition = new Vector2(ContentStart + playbackPos * lengthPerSec, 0);
                if (playbackPos >= allNotes[curNote].note.startTimeInSec)
                {
                    if (allNotes[curNote].isActiveAndEnabled)
                    {
                        allNotes[curNote].PlaySound();
                    }
                    ++curNote;
                }
            }
        }

        // debug
        if (center)
        {
            MusicalLevelEditor.ins.mousePositionInScroll[0] = (center.transform as RectTransform).anchoredPosition = Utils.ScreenToCanvasPos(Input.mousePosition) + GetScrollLocalCenter() - (scroll.transform as RectTransform).anchoredPosition;
        }

        // control
        if (Input.GetMouseButtonDown(1)) // mouse right click
        {
            DeselectAll();
        }
    }