8 Commits
v12 ... v11

Author SHA1 Message Date
StageGuard
8aa4db993f Upload user shared sheets 2020-09-01 23:40:07 +08:00
StageGuard
a01cf1ab08 Update version 12 2020-09-01 23:34:34 +08:00
StageGuard
c45c75bad3 Update version 12 2020-09-01 23:33:57 +08:00
StageGuard
d12e9f24ff Update version 12 2020-09-01 23:15:29 +08:00
StageGuard
dc719756ad Update .gitignore 2020-08-28 10:54:41 +08:00
StageGuard
56d33ac0af Upload user shared sheets 2020-08-28 10:53:39 +08:00
StageGuard
5689142309 Upload user shared sheets 2020-08-26 19:54:19 +08:00
StageGuard
401f221b04 Update README.md 2020-08-18 14:42:35 +08:00
9 changed files with 302 additions and 153 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.vscode/settings.json
.vscode/tasks.json

View File

@@ -1,3 +1,5 @@
# 关于脚本倒卖的问题: [#1](https://github.com/StageGuard/SkyAutoPlayerScript/issues/1)
# SkyAutoPlayerScript # SkyAutoPlayerScript
A script to play Sheets generated by SkyStudio automatically in game Sky with accessibility services using Auto.js A script to play Sheets generated by SkyStudio automatically in game Sky with accessibility services using Auto.js
</br>使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)导出的曲谱 </br>使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)导出的曲谱

View File

@@ -1 +1 @@
51b2da7101aebf7427b4f4a0ab4814f7f6dc60b5 c45c75bad3b4ddc25595429bcfc38101865f78e3

View File

@@ -1,5 +1,29 @@
{ {
"sheets": [{ "sheets": [{
"name": "不染",
"file": "不染_enhanced.txt",
"author": "酷安@九方辰",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/634078>酷安@九方辰<a/>分享乐谱 不染\n原作者为 抖音用户@子哲啊🌈(zizhe1880689503) \n 完善后续,修改了杂音",
"bpm" : 720,
"suggested_instrument": 1,
"pitchLevel": 7
}, {
"name": "Souvevirs d'Enfance\n童年的回忆",
"file": "Souvevirs_d'Enfance.txt",
"author": "酷安@你们很有趣呢",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n Souvevirs d'Enfance童年的回忆\n作者理查德·克莱德曼Richard Clayderman又名爱的记忆\n曲子比原曲慢了一点点建议加速播放",
"bpm" : 720,
"suggested_instrument": 1,
"pitchLevel": 7
}, {
"name": "Canon卡农 C大调 简易版",
"file": "Canon卡农_C大调_简易版.txt",
"author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Canon卡农 C大调 简易版",
"bpm" : 300,
"suggested_instrument": 1,
"pitchLevel": 0
}, {
"name": "九九八十一", "name": "九九八十一",
"file": "九九八十一.txt", "file": "九九八十一.txt",
"author": "酷安@慕疵", "author": "酷安@慕疵",
@@ -10,16 +34,16 @@
}, { }, {
"name": "Коробейники (货郎)\n俄罗斯方块BGM", "name": "Коробейники (货郎)\n俄罗斯方块BGM",
"file": "Коробейники.txt", "file": "Коробейники.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Коробейники (货郎)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Коробейники (货郎)",
"bpm" : 720, "bpm" : 720,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "土耳其进行曲(莫扎特)", "name": "土耳其进行曲(莫扎特)",
"file": "土耳其进行曲(莫扎特).txt", "file": "土耳其进行曲(莫扎特).txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 土耳其进行曲(莫扎特)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 土耳其进行曲(莫扎特)",
"bpm" : 528, "bpm" : 528,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
@@ -42,32 +66,32 @@
}, { }, {
"name": "Unity", "name": "Unity",
"file": "Unity.txt", "file": "Unity.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Unity", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Unity",
"bpm" : 600, "bpm" : 600,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "大鱼(简易)", "name": "大鱼(简易)",
"file": "大鱼(简易).txt", "file": "大鱼(简易).txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 大鱼(简易)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 大鱼(简易)",
"bpm" : 288, "bpm" : 288,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "嘿咻狂想曲", "name": "嘿咻狂想曲",
"file": "嘿咻狂想曲.txt", "file": "嘿咻狂想曲.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 嘿咻狂想曲\n<b>I love you🎵 , I miss you🎵</b>\n<u>建议在雨林右侧副本的隐藏图(两人掉下去那个),释放蝴蝶后弹奏</u>", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 嘿咻狂想曲\n<b>I love you🎵 , I miss you🎵</b>\n<u>建议在雨林右侧副本的隐藏图(两人掉下去那个),释放蝴蝶后弹奏</u>",
"bpm" : 480, "bpm" : 480,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 5 "pitchLevel": 5
}, { }, {
"name": "城南花已开", "name": "城南花已开",
"file": "城南花已开.txt", "file": "城南花已开.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 城南花已开", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 城南花已开",
"bpm" : 480, "bpm" : 480,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
@@ -82,24 +106,24 @@
}, { }, {
"name": "婚礼进行曲(整活用)", "name": "婚礼进行曲(整活用)",
"file": "婚礼进行曲(整活用).txt", "file": "婚礼进行曲(整活用).txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 婚礼进行曲(整活用)(简易版)\n<b>不推荐在别人递白蜡烛🕯时使用,因为会导致画面极度生草,且伴有顺着网线被暴打一顿的风险,没听懂的话我再强调一遍( 滑稽 )</b>", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 婚礼进行曲(整活用)(简易版)\n<b>不推荐在别人递白蜡烛🕯时使用,因为会导致画面极度生草,且伴有顺着网线被暴打一顿的风险,没听懂的话我再强调一遍( 滑稽 )</b>",
"bpm" : 280, "bpm" : 280,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "Graze the Roof", "name": "Graze the Roof",
"file": "Graze_the_Roof.txt", "file": "Graze_the_Roof.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Graze the Roof\n游戏《植物大战僵尸》(Plants vs. Zombies Soundtrack) 屋顶关卡背景音乐", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Graze the Roof\n游戏《植物大战僵尸》(Plants vs. Zombies Soundtrack) 屋顶关卡背景音乐",
"bpm" : 520, "bpm" : 520,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 8 "pitchLevel": 8
}, { }, {
"name": "Only My Railgun", "name": "Only My Railgun",
"file": "Only_my_railgun.txt", "file": "Only_my_railgun.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Only My Railgun \n(TVアニメ「とある科学の超電磁砲」OP1テーマ) \n你指尖跳跃的电光是我此生不灭的信仰", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Only My Railgun \n(TVアニメ「とある科学の超電磁砲」OP1テーマ) \n你指尖跳跃的电光是我此生不灭的信仰",
"bpm" : 440, "bpm" : 440,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
@@ -123,31 +147,31 @@
"name": "神々が恋した幻想郷(修改版)", "name": "神々が恋した幻想郷(修改版)",
"file": "神々が恋した幻想郷(修改版).txt", "file": "神々が恋した幻想郷(修改版).txt",
"author": "StageGuard", "author": "StageGuard",
"desc": "源谱来自酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>\n稍作修改使节奏更接近原曲\n(过一段时间出完整版)", "desc": "源谱来自酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>\n稍作修改使节奏更接近原曲\n(过一段时间出完整版)",
"bpm" : 512, "bpm" : 512,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 5 "pitchLevel": 5
}, { }, {
"name": "猪八戒背媳妇(简易单指)", "name": "猪八戒背媳妇(简易单指)",
"file": "猪八戒背媳妇(简易单指).txt", "file": "猪八戒背媳妇(简易单指).txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 猪八戒背媳妇(简易单指)\n背 背 友 尽 曲 ", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 猪八戒背媳妇(简易单指)\n背 背 友 尽 曲 ",
"bpm" : 440, "bpm" : 440,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "猪八戒背媳妇", "name": "猪八戒背媳妇",
"file": "猪八戒背媳妇.txt", "file": "猪八戒背媳妇.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 猪八戒背媳妇\n背 背 友 尽 曲 ", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 猪八戒背媳妇\n背 背 友 尽 曲 ",
"bpm" : 440, "bpm" : 440,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "夜的钢琴曲(五)", "name": "夜的钢琴曲(五)",
"file": "夜的钢琴曲(五).txt", "file": "夜的钢琴曲(五).txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 夜的钢琴曲(五)\n<u>应尽量避免洞穴效应</u>", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 夜的钢琴曲(五)\n<u>应尽量避免洞穴效应</u>",
"bpm" : 400, "bpm" : 400,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 3 "pitchLevel": 3
@@ -162,56 +186,56 @@
}, { }, {
"name": "The Right Path", "name": "The Right Path",
"file": "The_Right_Path.txt", "file": "The_Right_Path.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 The Right Path", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 The Right Path",
"bpm" : 500, "bpm" : 500,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 10 "pitchLevel": 10
}, { }, {
"name": "[C418]Danny (Minecraft BGM)", "name": "[C418]Danny (Minecraft BGM)",
"file": "C418_Danny.txt", "file": "C418_Danny.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Danny (Minecraft BGM)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Danny (Minecraft BGM)",
"bpm" : 320, "bpm" : 320,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "[C418]Wet Hands (Minecraft BGM)", "name": "[C418]Wet Hands (Minecraft BGM)",
"file": "C418_Wet_Hands.txt", "file": "C418_Wet_Hands.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Wet Hands (Minecraft BGM)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Wet Hands (Minecraft BGM)",
"bpm" : 272, "bpm" : 272,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 9 "pitchLevel": 9
}, { }, {
"name": "[C418]Hal2 (Minecraft BGM)", "name": "[C418]Hal2 (Minecraft BGM)",
"file": "C418_Hal2.txt", "file": "C418_Hal2.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Hal2 (Minecraft BGM)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Hal2 (Minecraft BGM)",
"bpm" : 300, "bpm" : 300,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "MIUI铃声(循环)", "name": "MIUI铃声(循环)",
"file": "MIUI铃声.txt", "file": "MIUI铃声.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 MIUI铃声(循环)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 MIUI铃声(循环)",
"bpm" : 280, "bpm" : 280,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "美丽拍档(朱一旦枯燥曲)", "name": "美丽拍档(朱一旦枯燥曲)",
"file": "美丽拍档.txt", "file": "美丽拍档.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 \n美丽拍档(朱一旦枯燥曲)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 \n美丽拍档(朱一旦枯燥曲)",
"bpm" : 266, "bpm" : 266,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
}, { }, {
"name": "Flower Dance", "name": "Flower Dance",
"file": "Flower_Dance.txt", "file": "Flower_Dance.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Flower Dance", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Flower Dance",
"bpm" : 400, "bpm" : 400,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 11 "pitchLevel": 11
@@ -250,16 +274,16 @@
}, { }, {
"name": "千本桜", "name": "千本桜",
"file": "千本桜.txt", "file": "千本桜.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 千本桜", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 千本桜",
"bpm" : 614, "bpm" : 614,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 5 "pitchLevel": 5
}, { }, {
"name": "神々が恋した幻想郷", "name": "神々が恋した幻想郷",
"file": "神々が恋した幻想郷.txt", "file": "神々が恋した幻想郷.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "越共探头(\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 神々が恋した幻想郷", "desc": "越共探头(\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 神々が恋した幻想郷",
"bpm" : 256, "bpm" : 256,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 5 "pitchLevel": 5
@@ -282,24 +306,24 @@
}, { }, {
"name": "[CL]だんご大家族", "name": "[CL]だんご大家族",
"file": "だんご大家族.txt", "file": "だんご大家族.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "<b>写作CL译作经典拼读人生。</b>\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 だんご大家族", "desc": "<b>写作CL译作经典拼读人生。</b>\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 だんご大家族",
"bpm" : 200, "bpm" : 200,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 6 "pitchLevel": 6
}, { }, {
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)", "name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
"file": "いつも何度でも.txt", "file": "いつも何度でも.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 いつも何度でも \n(「千と千尋の神隠し」主題歌)", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 いつも何度でも \n(「千と千尋の神隠し」主題歌)",
"bpm" : 230, "bpm" : 230,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 5 "pitchLevel": 5
}, { }, {
"name": "[钢琴曲]潮鸣り(原速)", "name": "[钢琴曲]潮鸣り(原速)",
"file": "潮鸣り.txt", "file": "潮鸣り.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [钢琴曲]潮鸣り(原速)\n<b>只建议用钢琴演奏原速</b>\n如需切合其他乐器请<u>通过Sky Studio修改更高的速度</u>", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [钢琴曲]潮鸣り(原速)\n<b>只建议用钢琴演奏原速</b>\n如需切合其他乐器请<u>通过Sky Studio修改更高的速度</u>",
"bpm" : 108, "bpm" : 108,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0
@@ -338,8 +362,8 @@
}, { }, {
"name": "简易茉莉花", "name": "简易茉莉花",
"file": "简易茉莉花.txt", "file": "简易茉莉花.txt",
"author": "酷安@夏川丶呇", "author": "酷安@夏卡卡卡",
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 简易茉莉花\n建议在由洞穴效应的地方弹;最后的部分因音高问题进行了小修改", "desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 简易茉莉花\n建议在由洞穴效应的地方弹;最后的部分因音高问题进行了小修改",
"bpm" : 200, "bpm" : 200,
"suggested_instrument": 1, "suggested_instrument": 1,
"pitchLevel": 0 "pitchLevel": 0

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -111,14 +111,29 @@ sheetmgr = {
__internal_fetchLocalSheets: function(listener) { __internal_fetchLocalSheets: function(listener) {
var sheets = files.listDir(this.rootDir, function(name){return name.endsWith(".txt");}); var sheets = files.listDir(this.rootDir, function(name){return name.endsWith(".txt");});
this.cachedLocalSheetList.length = 0; this.cachedLocalSheetList.length = 0;
var failed = 0;
for(var i in sheets) { for(var i in sheets) {
var readable = files.open(files.join(this.rootDir, sheets[i]), "r", this.encoding); try {
var parsed = eval(readable.read())[0]; var readable = files.open(files.join(this.rootDir, sheets[i]), "r", this.encoding);
readable.close(); var parsed = eval(readable.read())[0];
//parsed.songNotes = this.parseSongNote(parsed.songNotes); readable.close();
parsed.fileName = sheets[i]; //parsed.songNotes = this.parseSongNote(parsed.songNotes);
this.cachedLocalSheetList.push(parsed);
if(listener != null) listener(i); if(typeof(parsed.songNotes[0]) == "number" || parsed.isEncrypted) {
//failed type = 1 为加载了加密的JSON谱子
parsed = {failed: true, errtype: 1, fileName: sheets[i], reason: "It is a encrypted JSON sheet."};
failed ++;
} else {
parsed.fileName = sheets[i];
}
this.cachedLocalSheetList.push(parsed);
} catch (e) {
failed ++;
//failed type = 2 为JSON格式有误
//failed type = -1 为未知错误
this.cachedLocalSheetList.push({failed: true, errtype: /illegal character/.test(String(e)) ? -1 : (/SyntaxError/.test(String(e)) ? 2 : -1), fileName: sheets[i], reason: e});
}
if(listener != null) listener(Number(i) + 1, failed);
} }
}, },
__internal_fetchOnlineSharedSheets: function() { __internal_fetchOnlineSharedSheets: function() {
@@ -324,7 +339,9 @@ config = {
skipOnlineUploadTip: false, skipOnlineUploadTip: false,
skipOnlineSharedSheetCTip: false, skipOnlineSharedSheetCTip: false,
skipImportLocalSheetTip: false, skipImportLocalSheetTip: false,
currentVersion: 11, showFailedSheets: true,
tipOnAndroidR: true,
currentVersion: 12,
gitVersion: "", gitVersion: "",
}, },
@@ -332,6 +349,7 @@ config = {
init: function() { init: function() {
this._global_storage = storages.create("StageGuard:SkyAutoPlayer:Config"); this._global_storage = storages.create("StageGuard:SkyAutoPlayer:Config");
this.values.key_coordinates = this._global_storage.get("key_coordinates", this.values.key_coordinates); this.values.key_coordinates = this._global_storage.get("key_coordinates", this.values.key_coordinates);
this.values.skipRunScriptTip = this._global_storage.get("skip_run_script_tip", this.values.skipRunScriptTip); this.values.skipRunScriptTip = this._global_storage.get("skip_run_script_tip", this.values.skipRunScriptTip);
this.values.skipOpenWindowTip = this._global_storage.get("skip_open_window_tip", this.values.skipOpenWindowTip); this.values.skipOpenWindowTip = this._global_storage.get("skip_open_window_tip", this.values.skipOpenWindowTip);
@@ -339,8 +357,17 @@ config = {
this.values.skipOnlineUploadTip = this._global_storage.get("skip_online_upload_tip", this.values.skipOnlineUploadTip); this.values.skipOnlineUploadTip = this._global_storage.get("skip_online_upload_tip", this.values.skipOnlineUploadTip);
this.values.skipOnlineSharedSheetCTip = this._global_storage.get("skip_shared_sheet_c_tip", this.values.skipOnlineSharedSheetCTip); this.values.skipOnlineSharedSheetCTip = this._global_storage.get("skip_shared_sheet_c_tip", this.values.skipOnlineSharedSheetCTip);
this.values.skipImportLocalSheetTip = this._global_storage.get("skip_import_local_sheet_tip", this.values.skipImportLocalSheetTip); this.values.skipImportLocalSheetTip = this._global_storage.get("skip_import_local_sheet_tip", this.values.skipImportLocalSheetTip);
this.values.showFailedSheets = this._global_storage.get("show_failed_sheets", this.values.showFailedSheets);
this.values.tipOnAndroidR = this._global_storage.get("tip_storage_on_android_r", this.values.tipOnAndroidR);
try {
android.os.Build.VERSION_CODES.R
sheetmgr.rootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/sheets/";
if(this.values.tipOnAndroidR) toast("安卓11不允许外部应用读取应用私有文件夹乐谱文件夹移至" + sheetmgr.rootDir);
} catch (e) {}
files.ensureDir(sheetmgr.rootDir); files.ensureDir(sheetmgr.rootDir);
}, },
save: function(key, value) { save: function(key, value) {
@@ -371,7 +398,7 @@ config = {
fetchResources: function(listener) { fetchResources: function(listener) {
var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/"; var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/";
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png"]; var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png"];
var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/"; var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/bitmaps/";
var downloadQueue = []; var downloadQueue = [];
var tryCount = 1; var tryCount = 1;
try { try {
@@ -2016,52 +2043,63 @@ gui.dialogs.showProgressDialog(function(o) {
element.v_title.setId(10); element.v_title.setId(10);
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER); element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2)); element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_title.getLayoutParams().setMargins(dp * 15, dp * 15, dp * 15, dp * 1); element.v_title.getLayoutParams().setMargins(dp * 15, dp * 15, dp * 15, element.failed ? dp * 15 : dp * 1);
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT); element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
if(element.failed) element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
element.v_title.setTextSize(16); element.v_title.setTextSize(16);
element.v_title.setTextColor(gui.config.colors.text); element.v_title.setTextColor(element.failed ? gui.config.colors.sec_text : gui.config.colors.text);
element.v_title.setText(element.name); element.v_title.setText(element.failed ? android.text.Html.fromHtml("<s>" + element.fileName + "</s>") : element.name);
element.v_relative.addView(element.v_title); element.v_relative.addView(element.v_title);
element.v_author = new android.widget.TextView(ctx); if(!element.failed) {
element.v_author.setId(11); element.v_author = new android.widget.TextView(ctx);
element.v_author.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2)); element.v_author.setId(11);
element.v_author.getLayoutParams().setMargins(dp * 15, dp * 1, dp * 15, dp * 15); element.v_author.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_author.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 10); element.v_author.getLayoutParams().setMargins(dp * 15, dp * 1, dp * 15, dp * 15);
element.v_author.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT); element.v_author.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 10);
element.v_author.setTextSize(14); element.v_author.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
element.v_author.setTextColor(gui.config.colors.sec_text); element.v_author.setTextSize(14);
element.v_author.setText("键数: " + element.songNotes.length + " - BPM: " + element.bpm); element.v_author.setTextColor(gui.config.colors.sec_text);
element.v_relative.addView(element.v_author); element.v_author.setText("键数: " + element.songNotes.length + " - BPM: " + element.bpm);
element.v_relative.addView(element.v_author);
element.v_play = new android.widget.ImageView(ctx);
element.v_play.setId(12); element.v_play = new android.widget.ImageView(ctx);
element.v_play.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP); element.v_play.setId(12);
element.v_play.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39)); element.v_play.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
element.v_play.getLayoutParams().setMargins(0, dp * 15, dp * 15, dp * 15); element.v_play.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39));
element.v_play.setPadding(dp * 7, dp * 7, dp * 7, dp * 7); element.v_play.getLayoutParams().setMargins(0, dp * 15, dp * 15, dp * 15);
element.v_play.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT); element.v_play.setPadding(dp * 7, dp * 7, dp * 7, dp * 7);
element.v_play.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL); element.v_play.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
element.v_play.setImageBitmap(config.bitmaps.play); element.v_play.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
element.v_play.measure(0, 0); element.v_play.setImageBitmap(config.bitmaps.play);
element.v_play.setBackgroundDrawable(gui.utils.ripple_drawable(element.v_play.getMeasuredWidth(), element.v_play.getMeasuredHeight(), "rect")); element.v_play.measure(0, 0);
element.v_play.setOnClickListener(new android.view.View.OnClickListener({ element.v_play.setBackgroundDrawable(gui.utils.ripple_drawable(element.v_play.getMeasuredWidth(), element.v_play.getMeasuredHeight(), "rect"));
onClick: function() { element.v_play.setOnClickListener(new android.view.View.OnClickListener({
if(config.values.key_coordinates.length == 15 && gui.main.isShowing) { onClick: function() {
gui.main.__internal_dismiss(); if(config.values.key_coordinates.length == 15 && gui.main.isShowing) {
gui.player_panel.__internal_showPanel(element); gui.main.__internal_dismiss();
} else { gui.player_panel.__internal_showPanel(element);
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标"); } else {
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标");
}
return true;
} }
} }));
}));
element.v_relative.addView(element.v_play);
}
element.v_delete = new android.widget.ImageView(ctx); element.v_delete = new android.widget.ImageView(ctx);
element.v_delete.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP); element.v_delete.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
element.v_delete.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39)); element.v_delete.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39));
element.v_delete.getLayoutParams().setMargins(dp * 15, dp * 15, 0, dp * 15); element.v_delete.getLayoutParams().setMargins(dp * 15, dp * 15, element.failed ? dp * 15 : 0, dp * 15);
element.v_delete.setPadding(dp * 7, dp * 7, dp * 7, dp * 7); element.v_delete.setPadding(dp * 7, dp * 7, dp * 7, dp * 7);
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 12); if(element.failed) {
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
} else {
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 12);
}
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL); element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
element.v_delete.setImageBitmap(config.bitmaps.bin); element.v_delete.setImageBitmap(config.bitmaps.bin);
element.v_delete.measure(0, 0); element.v_delete.measure(0, 0);
@@ -2081,12 +2119,10 @@ gui.dialogs.showProgressDialog(function(o) {
} }
}, },
}); });
return true;
} }
})); }));
element.v_relative.addView(element.v_delete);
element.v_relative.addView(element.v_play);
element.v_relative.addView(element.v_delete);
return element.v_relative; return element.v_relative;
})); }));
s.ns0_listAdapterController = RhinoListAdapter.getController(s.ns0_listAdapter); s.ns0_listAdapterController = RhinoListAdapter.getController(s.ns0_listAdapter);
@@ -2099,7 +2135,14 @@ gui.dialogs.showProgressDialog(function(o) {
case 0: { case 0: {
gui.dialogs.showConfirmDialog({ gui.dialogs.showConfirmDialog({
title: "如何导入本地乐谱", title: "如何导入本地乐谱",
text: android.text.Html.fromHtml(String("本地乐谱文件夹在<b>SkyStudio</b>的乐谱存储位置\n" + text: android.text.Html.fromHtml(String("本地乐谱文件夹在" + (function(){
try {
android.os.Build.VERSION_CODES.R
return "<b>Android标准文档文件夹</b>下"
} catch (e) {
return "<b>SkyStudio的乐谱存储位置</b>";
}
}()) + "\n" +
"<u><b>" + sheetmgr.rootDir + "</u></b>\n" + "<u><b>" + sheetmgr.rootDir + "</u></b>\n" +
"将外部乐谱复制进这个文件夹即可\n\n" + "将外部乐谱复制进这个文件夹即可\n\n" +
"注意:\n" + "注意:\n" +
@@ -2117,6 +2160,19 @@ gui.dialogs.showProgressDialog(function(o) {
} }
return true; return true;
} }
if(item.failed) {
gui.dialogs.showConfirmDialog({
title: "加载" + item.fileName + "失败",
text: android.text.Html.fromHtml(String("加载乐谱" + item.fileName + "失败\n\n原因\n" + item.reason + "\n\n请检查以下内容\n" +
(item.errtype == -1 ? "<b>1. 谱子编码是否为UTF16-LE</b>\n" : "<s>1. 谱子编码是否为UTF16-LE</s>\n") +
(item.errtype == 1 ? "<b>2. 谱子是否为未加密的JSON格式</b>\n" : "<s>2. 谱子是否为未加密的JSON格式</s>\n") +
(item.errtype == 2 ? "<b>3. 谱子是否有JSON语法错误</b>" : "<s>3. 谱子是否有JSON语法错误</s>")
).replace(new RegExp("\x0a", "gi"), "<br>")),
canExit: true,
buttons: ["确认"]
});
return;
}
gui.dialogs.showDialog((function () { gui.dialogs.showDialog((function () {
var scr = new android.widget.ScrollView(ctx); var scr = new android.widget.ScrollView(ctx);
scr.setBackgroundColor(gui.config.colors.background); scr.setBackgroundColor(gui.config.colors.background);
@@ -2221,13 +2277,17 @@ gui.dialogs.showProgressDialog(function(o) {
});//上传乐谱提示 });//上传乐谱提示
s.ns0_listAdapterController.notifyChange(); s.ns0_listAdapterController.notifyChange();
threads.start(function() { threads.start(function() {
sheetmgr.getLocalSheetList(isForce, function(i) { sheetmgr.getLocalSheetList(isForce, function(successCount, failedCount) {
gui.run(function(){ gui.run(function(){
gui.main._global_title.setText("加载中: 共" + i + "首乐谱"); gui.main._global_title.setText("加载中: 共" + successCount + "首乐谱(" + failedCount + "失败)");
}); });
}).map(function(e, i) { }).map(function(e, i) {
gui.run(function(){ gui.run(function(){
s.ns0_listAdapterController.add(e); if(!e.failed) {
s.ns0_listAdapterController.add(e);
} else if(config.values.showFailedSheets){
s.ns0_listAdapterController.add(e);
}
}); });
}); });
gui.run(function() { gui.run(function() {
@@ -2396,7 +2456,7 @@ gui.dialogs.showProgressDialog(function(o) {
} }
} }
}); });
}); } }); return true;}
})); }));
element.v_relative.addView(element.download); element.v_relative.addView(element.download);
@@ -2611,53 +2671,76 @@ gui.dialogs.showProgressDialog(function(o) {
view: function(s) { view: function(s) {
s.ns2_listView = new android.widget.ListView(ctx); s.ns2_listView = new android.widget.ListView(ctx);
s.ns2_listView.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height)); s.ns2_listView.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height));
s.ns2_listView.setAdapter(s.ns2_listAdapter = new RhinoListAdapter([{ s.ns2_listView.setAdapter(s.ns2_listAdapter = new RhinoListAdapter((function sList(){
type: "tag", sList.list = [{
name: "基本设置", type: "tag",
}, { name: "基本设置",
type: "default", }, {
name: "设置键位坐标", type: "default",
onClick: function(v) { name: "设置键位坐标",
gui.main.__internal_dismiss(); onClick: function(v) {
gui.key_coordinate_navigation.show(); gui.main.__internal_dismiss();
} gui.key_coordinate_navigation.show();
}, { }
type: "default", }, {
name: "查看使用须知", type: "checkbox",
onClick: function(v) { name: "显示加载失败的乐谱",
gui.dialogs.showConfirmDialog({ check: config.values.showFailedSheets,
title: "使用须知", onClick: function(checked) {
text: user_agreements, config.values.showFailedSheets = config.save("show_failed_sheets", checked);
canExit: true, }
buttons: ["确认"], }, {
}) type: "checkbox",
}, name: "启动脚本时显示存储提示",
}, { check: config.values.tipOnAndroidR,
type: "default", onClick: function(checked) {
name: "查看LICENSE", config.values.tipOnAndroidR = config.save("tip_storage_on_android_r", checked);
onClick: function(v) { }
threads.start(function() { },
config.fetchRepoFile("LICENSE", null, function(body) { {
gui.dialogs.showConfirmDialog({ type: "default",
title: "GNU GENERAL PUBLIC LICENSE", name: "查看使用须知",
text: body.string(), onClick: function(v) {
canExit: true, gui.dialogs.showConfirmDialog({
buttons: ["确认"], title: "使用须知",
text: user_agreements,
canExit: true,
buttons: ["确认"],
})
},
}, {
type: "default",
name: "查看LICENSE",
onClick: function(v) {
threads.start(function() {
config.fetchRepoFile("LICENSE", null, function(body) {
gui.dialogs.showConfirmDialog({
title: "GNU GENERAL PUBLIC LICENSE",
text: body.string(),
canExit: true,
buttons: ["确认"],
});
}); });
}); });
}); },
}, }, {
}, { type: "default",
type: "default", name: "结束脚本运行",
name: "结束脚本运行", onClick: function(v) {
onClick: function(v) { gui.main.__internal_dismiss();
gui.main.__internal_dismiss(); exit();
exit(); },
}, }, {
}, { type: "tag",
type: "tag", name: "Version: " + config.values.currentVersion + "(git@" + config.values.gitVersion + ")",
name: "Version: " + config.values.currentVersion + "(git@" + config.values.gitVersion + ")", }];
}], function self(element) { try {
android.os.Build.VERSION_CODES.R
} catch (e) {
sList.list.splice(3, 1);
}
return sList.list;
}()), function self(element) {
element.v_relative = new android.widget.RelativeLayout(ctx); element.v_relative = new android.widget.RelativeLayout(ctx);
element.v_relative.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2)); element.v_relative.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
@@ -2675,7 +2758,6 @@ gui.dialogs.showProgressDialog(function(o) {
break; break;
case "default": case "default":
element.v_title = new android.widget.TextView(ctx); element.v_title = new android.widget.TextView(ctx);
element.v_title.setId(10);
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER); element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2)); element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10); element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
@@ -2685,6 +2767,33 @@ gui.dialogs.showProgressDialog(function(o) {
element.v_title.setText(element.name); element.v_title.setText(element.name);
element.v_relative.addView(element.v_title); element.v_relative.addView(element.v_title);
break; break;
case "checkbox":
element.v_title = new android.widget.TextView(ctx);
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
element.v_title.setTextSize(14);
element.v_title.setTextColor(gui.config.colors.text);
element.v_title.setText(element.name);
element.v_relative.addView(element.v_title);
element.v_checkbox = new android.widget.CheckBox(ctx);
element.v_checkbox.setGravity(android.view.Gravity.CENTER | android.view.Gravity.CENTER);
element.v_checkbox.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
element.v_checkbox.getLayoutParams().setMargins(dp * 5, dp * 5, dp * 15, dp * 5);
element.v_checkbox.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
element.v_checkbox.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
element.v_checkbox.setFocusable(false);
element.v_checkbox.setChecked(element.check);
element.v_checkbox.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener({
onCheckedChanged: function(checkBox, value) {
element.onClick(value)
},
}));
element.v_relative.addView(element.v_checkbox);
break;
} }
return element.v_relative; return element.v_relative;
@@ -2698,6 +2807,10 @@ gui.dialogs.showProgressDialog(function(o) {
switch(item.type) { switch(item.type) {
case "default": case "default":
item.onClick(view); item.onClick(view);
break;
case "checkbox":
item.v_checkbox.performClick();
item.onClick(item.v_checkbox.isChecked());
} }
} }
})); }));

View File

@@ -1,3 +1,11 @@
版本: 12
更新时间: 2020.09.01 23:12
更新内容:
* 修复:某个乐谱加载失败导致之后的乐谱不能加载的问题
* 新增:加载失败的乐谱会在列表显示,以及显示加载失败原因和建议(可以在设置中禁止显示)
* 修复Android R无法加载乐谱的问题
* 新增Android R启动提示(可在设置关闭提示)
版本: 11 版本: 11
更新时间: 2020.08.03 21:13 更新时间: 2020.08.03 21:13
更新内容: 更新内容: