如何使rest不高或低(不要更改键"r/4")。链接演示:JSFindle
下面是代码演示:
// Create the notes
new VF.StaveNote({ keys: ["c/4", "e/4", "g/4"], duration: "q" })

发布于 2018-11-13 09:59:32
现在还不清楚你想做什么,但是看看JSFiddle,你在同一个音阶上有两个声音,第一个声音的其他声音和第二个音符的音符重叠。
有一个声音用下面的代码创建其余的代码:
new VF.StaveNote({ keys: ["r/4"], duration: "qr" }),另一个声音在与其他声音相同的位置有一个音符:
new VF.StaveNote({ keys: ["c/5"], duration: "h" })假设第二个声音中的音符在你想要的位置,你可以控制第一个声音中其他音符的垂直位置,这样它就不会重叠。您可以通过使用一个便笺字母来实现这一点,该字母指示希望其余部分出现在墙壁上的高度。例如,替换此代码:
new VF.StaveNote({ keys: ["r/4"], duration: "qr" }),使用此代码:
new VF.StaveNote({ keys: ["c/4"], duration: "qr" }),您的rest将出现在当前与之重叠的C4下面的C5注释中。
如果不想更改键"r/4",可以更改键"c/4“以避免重叠。
如果你真的想让剩下的和笔记出现在同一高度上,而不是重叠,我想你最终会得到一些音乐无法读懂的东西,但你可以通过从StaveNote派生出自己的类并重写getAbsoluteX来完全控制它的位置(不管是音符还是其他):
class FixedStaveNote extends VF.StaveNote {
getAbsoluteX() {
return 72;
}
};(您需要对重叠的StaveNotes执行此操作,并返回不同的值。如果您只对第一个格式化程序执行此操作,则格式化程序将对齐第二个格式化程序)。
最后,如果您想在不更改键"r/4“的情况下控制其余部分的垂直位置,则可以重写calculateKeyProps:
class FixedStaveNote extends VF.StaveNote {
calculateKeyProps() {
super.calculateKeyProps();
for (let i = 0; i < this.keyProps.length; ++i) {
const props = this.keyProps[i];
if (props.key === 'R') {
props.line = 0;
}
}
}
}这将改变其余部分将出现在其中的stave行。
下面是一个更新的JSFiddle,使用calculateKeyProps的覆盖没有重叠。
https://stackoverflow.com/questions/51964107
复制相似问题