コード例 #1
0
    private void UpdatePosition(VirtualPianoKeyControl keyControl)
    {
        float heightPercent = noteAreaControl.HeightForSingleNote * 0.8f;
        float yPercent      = (float)noteAreaControl.GetVerticalPositionForMidiNote(keyControl.MidiNote) - heightPercent / 2;
        float widthPercent  = MidiUtils.IsWhitePianoKey(keyControl.MidiNote) ? 0.9f : 0.7f;

        VisualElement visualElement = keyControl.VisualElement;

        visualElement.style.position = new StyleEnum <Position>(Position.Absolute);
        visualElement.style.top      = new StyleLength(new Length(yPercent * 100, LengthUnit.Percent));
        visualElement.style.height   = new StyleLength(new Length(heightPercent * 100, LengthUnit.Percent));
        visualElement.style.left     = 0;
        visualElement.style.width    = new StyleLength(new Length(widthPercent * 100, LengthUnit.Percent));
    }
コード例 #2
0
    private VirtualPianoKeyControl CreatePianoKeyForMidiNote(int midiNote)
    {
        VisualElement visualElement = new();

        visualElement.AddToClassList("virtualPianoKey");
        VirtualPianoKeyControl keyControl = injector
                                            .WithRootVisualElement(visualElement)
                                            .CreateAndInject <VirtualPianoKeyControl>();

        keyControl.MidiNote = midiNote;

        virtualPiano.Add(visualElement);

        return(keyControl);
    }