Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0976b30c1 | ||
|
|
65fdecb9be | ||
|
|
2a16af252f | ||
|
|
cd967af5c8 | ||
|
|
df9ddff4e4 | ||
|
|
8f26c9e1de | ||
|
|
b88515f4f2 | ||
|
|
46b88f4c6f | ||
|
|
03af82818a | ||
|
|
9f5a6ab58e | ||
|
|
f468dabb89 | ||
|
|
bb570e1b5c | ||
|
|
e57d7d5ad3 | ||
|
|
b3d3f77ba5 | ||
|
|
8abf823182 | ||
|
|
064a8fbe9a | ||
|
|
c43edd8549 | ||
|
|
eca5b79934 | ||
|
|
4e14a0d2c9 | ||
|
|
f38adb904f | ||
|
|
44aab3f525 | ||
|
|
1383f66726 | ||
|
|
715e21a420 |
22
README.md
22
README.md
@@ -14,11 +14,15 @@ A script to play Sheets generated by SkyStudio automatically in game Sky with ac
|
|||||||
* 自动更新,及时修复BUG,无需担心版本过时问题。
|
* 自动更新,及时修复BUG,无需担心版本过时问题。
|
||||||
* ...
|
* ...
|
||||||
|
|
||||||
## 使用
|
## 使用(Usage)
|
||||||
<br>①Auto.js`4.1.1 Alpha2 (461)`版本下载: [`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
|
<br>①Auto.js`4.1.1 Alpha2 (461)`版本下载: [`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
|
||||||
|
<br>Download `Auto.js`[`Ericwyn/Auto.js/releases@V4.1.1.Alpha2`](https://github.com/Ericwyn/Auto.js/releases/tag/V4.1.1.Alpha2)
|
||||||
<br>手机请下载`autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
|
<br>手机请下载`autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
|
||||||
|
<br>Please download `autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
|
||||||
<br>②为Auto.js开启**无障碍服务**和**悬浮窗权限**。
|
<br>②为Auto.js开启**无障碍服务**和**悬浮窗权限**。
|
||||||
|
<br>Turn on **Accessibility service** and allow **Display pop-up window** permission for Auto.js
|
||||||
<br>③在Auto.js中新建一个脚本并粘贴以下代码并运行:
|
<br>③在Auto.js中新建一个脚本并粘贴以下代码并运行:
|
||||||
|
<br>Create a new script file in Auto.js. Copy the code below and run!
|
||||||
```javascript
|
```javascript
|
||||||
"ui";
|
"ui";
|
||||||
"use strict";
|
"use strict";
|
||||||
@@ -45,8 +49,10 @@ emitter.on('evaluate', function(s){
|
|||||||
|
|
||||||
在Auto.js版本`4.1.1 Alpha2 (461)`中测试通过,不保证其他版本的兼容性(取决于其他版本相对于此版本的API是否有`breaking changes`)
|
在Auto.js版本`4.1.1 Alpha2 (461)`中测试通过,不保证其他版本的兼容性(取决于其他版本相对于此版本的API是否有`breaking changes`)
|
||||||
|
|
||||||
## 清除数据
|
## 清除数据(Clear data)
|
||||||
SkyAutoPlayer在使用过程中会产生本地数据存储,若想全部删除,请使用Auto.js执行以下代码
|
`SkyAutoPlayerScript`在使用过程中会产生本地数据存储,若想全部删除,请使用Auto.js执行以下代码
|
||||||
|
<br>`SkyAutoPlayerScript` will store some data while using, if you want to delete all data, please run the code below in Auto.js
|
||||||
|
|
||||||
```
|
```
|
||||||
storages.remove("StageGuard:SkyAutoPlayer:Config");
|
storages.remove("StageGuard:SkyAutoPlayer:Config");
|
||||||
files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
||||||
@@ -71,6 +77,8 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
"bpm" : 320,
|
"bpm" : 320,
|
||||||
//暂时没用
|
//暂时没用
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
//乐谱键位数(8键或15键)
|
||||||
|
"keyCount": 15,
|
||||||
//乐谱音高
|
//乐谱音高
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}
|
}
|
||||||
@@ -79,6 +87,8 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
修改完成后,申请`Pull Request`,等待merge即可。
|
修改完成后,申请`Pull Request`,等待merge即可。
|
||||||
> 请注意:在申请`Pull Request`之前请确保你的SkyAutoPlayerScript仓库已同步至最新,以免出现意外问题!
|
> 请注意:在申请`Pull Request`之前请确保你的SkyAutoPlayerScript仓库已同步至最新,以免出现意外问题!
|
||||||
|
|
||||||
|
或通过发送乐谱到邮箱[beamiscool@qq.com](mailto:beamiscool@qq.com)
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
# 注意
|
# 注意
|
||||||
@@ -89,6 +99,7 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
3. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思),若因使用本脚本所出现了一些不友好的问题,与脚本作者StageGuard无关。
|
3. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思),若因使用本脚本所出现了一些不友好的问题,与脚本作者StageGuard无关。
|
||||||
4. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。
|
4. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。
|
||||||
5. 本脚本只是一个"弹奏机",并不内置曲谱,请在GooglePlay下载[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)编谱。
|
5. 本脚本只是一个"弹奏机",并不内置曲谱,请在GooglePlay下载[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)编谱。
|
||||||
|
6. 本脚本不会增加解密乐谱功能,包括但不限于**加密的SkyStudio乐谱**,**加密的JS**等,也不接受加密乐谱的共享。
|
||||||
|
|
||||||
# 贡献
|
# 贡献
|
||||||
欢迎任何人贡献本项目,包括但不限于Pull Request,Issue,New feature request
|
欢迎任何人贡献本项目,包括但不限于Pull Request,Issue,New feature request
|
||||||
@@ -109,8 +120,9 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
酷安[@社区最弱萌新](http://www.coolapk.com/u/3291313)<br>
|
酷安[@社区最弱萌新](http://www.coolapk.com/u/3291313)<br>
|
||||||
酷安[@九方辰](http://www.coolapk.com/u/634078)<br>
|
酷安[@九方辰](http://www.coolapk.com/u/634078)<br>
|
||||||
酷安[@北极马可罗尼](http://www.coolapk.com/u/463478)<br>
|
酷安[@北极马可罗尼](http://www.coolapk.com/u/463478)<br>
|
||||||
酷安[@UTF16](http://www.coolapk.com/u/3751911)<br>
|
哔哩哔哩[@UTF16](https://space.bilibili.com/623364258)<br>
|
||||||
酷安[@]()<br>
|
酷安[@Syngenex](http://www.coolapk.com/u/1093421)<br>
|
||||||
|
Twitter[Phoebe@huunhut1217](https://mobile.twitter.com/huunhut1217)<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
# 图标来源
|
# 图标来源
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
13979f81ae3a4e415446100d56b9499592d89b8d
|
65fdecb9be4821eaa1ef42a71598c250e64a3de5
|
||||||
@@ -1,147 +1,318 @@
|
|||||||
{
|
{
|
||||||
"sheets": [{
|
"sheets": [{
|
||||||
|
"name": "恋爱循环",
|
||||||
|
"file": "恋爱循环.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 恋爱循环",
|
||||||
|
"bpm" : 480,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "微微",
|
||||||
|
"file": "微微.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 微微",
|
||||||
|
"bpm" : 204,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "Dream It Possible",
|
||||||
|
"file": "Dream_It_Possible.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 Dream It Possible\n华为加油",
|
||||||
|
"bpm" : 455,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "Love 5",
|
||||||
|
"file": "Love_5.txt",
|
||||||
|
"author": "Phoebe(twitter@huunhut1217)",
|
||||||
|
"desc": "Twitter用户<a href=https://mobile.twitter.com/huunhut1217>Phoebe(twitter@huunhut1217)<a/>分享乐谱 Love 5",
|
||||||
|
"bpm" : 600,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 2
|
||||||
|
}, {
|
||||||
|
"name": "Co Chac Yeu La Day - MTP",
|
||||||
|
"file": "Co_Chac_Yeu_La_Day-MTP.txt",
|
||||||
|
"author": "Phoebe(twitter@huunhut1217)",
|
||||||
|
"desc": "Twitter用户<a href=https://mobile.twitter.com/huunhut1217>Phoebe(twitter@huunhut1217)<a/>分享乐谱 Co Chac Yeu La Day - MTP",
|
||||||
|
"bpm" : 720,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 6
|
||||||
|
}, {
|
||||||
|
"name": "Hanava",
|
||||||
|
"file": "Hanava.txt",
|
||||||
|
"author": "Phoebe(twitter@huunhut1217)",
|
||||||
|
"desc": "Twitter用户<a href=https://mobile.twitter.com/huunhut1217>Phoebe(twitter@huunhut1217)<a/>分享乐谱 Hanava",
|
||||||
|
"bpm" : 800,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 10
|
||||||
|
}, {
|
||||||
|
"name": "Summertime",
|
||||||
|
"file": "Summertime.txt",
|
||||||
|
"author": "Phoebe(twitter@huunhut1217)",
|
||||||
|
"desc": "Twitter用户<a href=https://mobile.twitter.com/huunhut1217>Phoebe(twitter@huunhut1217)<a/>分享乐谱 Summertime",
|
||||||
|
"bpm" : 850,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 2
|
||||||
|
}, {
|
||||||
|
"name": "See You Again (Stb)",
|
||||||
|
"file": "See_You_Again_(Stb).txt",
|
||||||
|
"author": "Phoebe(twitter@huunhut1217)",
|
||||||
|
"desc": "Twitter用户<a href=https://mobile.twitter.com/huunhut1217>Phoebe(twitter@huunhut1217)<a/>分享乐谱 See You Again (Stb)",
|
||||||
|
"bpm" : 280,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "不知所措",
|
||||||
|
"file": "不知所措.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 不知所措",
|
||||||
|
"bpm" : 300,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "那女孩对我说",
|
||||||
|
"file": "那女孩对我说.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 那女孩对我说",
|
||||||
|
"bpm" : 190,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "演员",
|
||||||
|
"file": "演员.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 演员",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "追光者",
|
||||||
|
"file": "追光者.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 追光者",
|
||||||
|
"bpm" : 286,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "走马",
|
||||||
|
"file": "走马.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 走马",
|
||||||
|
"bpm" : 289,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "Mojito",
|
||||||
|
"file": "Mojito.txt",
|
||||||
|
"author": "酷安@Syngenex",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 Mojito",
|
||||||
|
"bpm" : 245,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "下雨天",
|
||||||
|
"file": "下雨天.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 下雨天",
|
||||||
|
"bpm" : 207,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
"name": "极乐净土(和弦)",
|
"name": "极乐净土(和弦)",
|
||||||
"file": "极乐净土(和弦).txt",
|
"file": "极乐净土(和弦).txt",
|
||||||
"author": "酷安@Syngene",
|
"author": "酷安@Syngenex",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngene<a/>分享乐谱 极乐净土(和弦)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 极乐净土(和弦)",
|
||||||
"bpm" : 532,
|
"bpm" : 532,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "极乐净土(无和弦)",
|
"name": "极乐净土(无和弦)",
|
||||||
"file": "极乐净土(无和弦).txt",
|
"file": "极乐净土(无和弦).txt",
|
||||||
"author": "酷安@Syngene",
|
"author": "酷安@Syngenex",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngene<a/>分享乐谱 极乐净土(无和弦)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngenex<a/>分享乐谱 极乐净土(无和弦)",
|
||||||
"bpm" : 532,
|
"bpm" : 532,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "童话镇",
|
||||||
|
"file": "童话镇.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 童话镇",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "体面",
|
||||||
|
"file": "体面.txt",
|
||||||
|
"author": "哔哩哔哩@UTF16",
|
||||||
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 体面",
|
||||||
|
"bpm" : 241,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "阿珍爱上了阿强",
|
"name": "阿珍爱上了阿强",
|
||||||
"file": "阿珍爱上了阿强_UTF16.txt",
|
"file": "阿珍爱上了阿强_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 阿珍爱上了阿强",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 阿珍爱上了阿强",
|
||||||
"bpm" : 197,
|
"bpm" : 197,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "虫儿飞儿歌",
|
"name": "虫儿飞儿歌",
|
||||||
"file": "虫儿飞儿歌_UTF16.txt",
|
"file": "虫儿飞儿歌_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 虫儿飞儿歌",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 虫儿飞儿歌",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "辞乆门回忆",
|
"name": "辞乆门回忆",
|
||||||
"file": "辞乆门回忆_UTF16.txt",
|
"file": "辞乆门回忆_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 辞乆门回忆",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 辞乆门回忆",
|
||||||
"bpm" : 270,
|
"bpm" : 270,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "打上花火",
|
"name": "打上花火",
|
||||||
"file": "打上花火_UTF16.txt",
|
"file": "打上花火_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 打上花火",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 打上花火",
|
||||||
"bpm" : 300,
|
"bpm" : 300,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "大悲咒",
|
"name": "大悲咒",
|
||||||
"file": "大悲咒_UTF16.txt",
|
"file": "大悲咒_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 大悲咒",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 大悲咒",
|
||||||
"bpm" : 230,
|
"bpm" : 230,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "好运来HX",
|
"name": "好运来HX",
|
||||||
"file": "好运来HX_UTF16.txt",
|
"file": "好运来HX_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 好运来HX",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 好运来HX",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "幻昼CH",
|
"name": "幻昼CH",
|
||||||
"file": "幻昼CH_UTF16.txt",
|
"file": "幻昼CH_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 幻昼CH",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 幻昼CH",
|
||||||
"bpm" : 200,
|
"bpm" : 200,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "偏爱",
|
"name": "偏爱",
|
||||||
"file": "偏爱_UTF16.txt",
|
"file": "偏爱_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 偏爱",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 偏爱",
|
||||||
"bpm" : 220,
|
"bpm" : 220,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "四月是你的谎言",
|
"name": "四月是你的谎言",
|
||||||
"file": "四月是你的谎言_UTF16.txt",
|
"file": "四月是你的谎言_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 四月是你的谎言",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 四月是你的谎言",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "误红装A1",
|
"name": "误红装A1",
|
||||||
"file": "误红装A1_UTF16.txt",
|
"file": "误红装A1_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 误红装A1",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 误红装A1",
|
||||||
"bpm" : 200,
|
"bpm" : 200,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "夏天的风",
|
"name": "夏天的风",
|
||||||
"file": "夏天的风_UTF16.txt",
|
"file": "夏天的风_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 夏天的风",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 夏天的风",
|
||||||
"bpm" : 220,
|
"bpm" : 220,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "夏天的风GF",
|
"name": "夏天的风GF",
|
||||||
"file": "夏天的风GF_UTF16.txt",
|
"file": "夏天的风GF_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 夏天的风GF",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 夏天的风GF",
|
||||||
"bpm" : 220,
|
"bpm" : 220,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "小星星",
|
"name": "小星星",
|
||||||
"file": "小星星_UTF16.txt",
|
"file": "小星星_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 小星星",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 小星星",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "心作",
|
"name": "心作",
|
||||||
"file": "心作_UTF16.txt",
|
"file": "心作_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 心作",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 心作",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "雨林",
|
"name": "雨林",
|
||||||
"file": "雨林_UTF16.txt",
|
"file": "雨林_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 雨林",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 雨林",
|
||||||
"bpm" : 249,
|
"bpm" : 249,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "猪猪侠",
|
"name": "猪猪侠",
|
||||||
"file": "猪猪侠_UTF16.txt",
|
"file": "猪猪侠_UTF16.txt",
|
||||||
"author": "酷安@UTF16",
|
"author": "哔哩哔哩@UTF16",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 猪猪侠",
|
"desc": "哔哩哔哩用户<a href=https://space.bilibili.com/623364258>@UTF16<a/>分享乐谱 猪猪侠",
|
||||||
"bpm" : 280,
|
"bpm" : 280,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "もペもぺ(mopemope)",
|
"name": "もペもぺ(mopemope)",
|
||||||
@@ -150,6 +321,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 もペもぺ(mopemope)\n一首音游玩家熟悉的、好听的儿歌(并不)\n非完整版",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 もペもぺ(mopemope)\n一首音游玩家熟悉的、好听的儿歌(并不)\n非完整版",
|
||||||
"bpm" : 400,
|
"bpm" : 400,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 7
|
"pitchLevel": 7
|
||||||
}, {
|
}, {
|
||||||
"name": "[IPhone]马林巴琴",
|
"name": "[IPhone]马林巴琴",
|
||||||
@@ -158,6 +330,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [IPhone]马林巴琴",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [IPhone]马林巴琴",
|
||||||
"bpm" : 660,
|
"bpm" : 660,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "穿越时空的思念",
|
"name": "穿越时空的思念",
|
||||||
@@ -166,6 +339,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/463478>@北极马可罗尼<a/>分享乐谱 穿越时空的思念",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/463478>@北极马可罗尼<a/>分享乐谱 穿越时空的思念",
|
||||||
"bpm" : 160,
|
"bpm" : 160,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "不染",
|
"name": "不染",
|
||||||
@@ -174,6 +348,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/634078>酷安@九方辰<a/>分享乐谱 不染\n原作者为 抖音用户@子哲啊🌈(zizhe1880689503) \n 完善后续,修改了杂音",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/634078>酷安@九方辰<a/>分享乐谱 不染\n原作者为 抖音用户@子哲啊🌈(zizhe1880689503) \n 完善后续,修改了杂音",
|
||||||
"bpm" : 150,
|
"bpm" : 150,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Souvevirs d'Enfance\n童年的回忆",
|
"name": "Souvevirs d'Enfance\n童年的回忆",
|
||||||
@@ -182,6 +357,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n Souvevirs d'Enfance(童年的回忆)\n作者:理查德·克莱德曼(Richard Clayderman)又名爱的记忆\n曲子比原曲慢了一点点,建议加速播放",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n Souvevirs d'Enfance(童年的回忆)\n作者:理查德·克莱德曼(Richard Clayderman)又名爱的记忆\n曲子比原曲慢了一点点,建议加速播放",
|
||||||
"bpm" : 720,
|
"bpm" : 720,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 7
|
"pitchLevel": 7
|
||||||
}, {
|
}, {
|
||||||
"name": "Canon卡农 C大调 简易版",
|
"name": "Canon卡农 C大调 简易版",
|
||||||
@@ -190,6 +366,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Canon卡农 C大调 简易版",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Canon卡农 C大调 简易版",
|
||||||
"bpm" : 300,
|
"bpm" : 300,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "九九八十一",
|
"name": "九九八十一",
|
||||||
@@ -198,6 +375,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3286967>@慕疵<a/>分享乐谱 九九八十一",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3286967>@慕疵<a/>分享乐谱 九九八十一",
|
||||||
"bpm" : 550,
|
"bpm" : 550,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Коробейники (货郎)\n俄罗斯方块BGM",
|
"name": "Коробейники (货郎)\n俄罗斯方块BGM",
|
||||||
@@ -206,6 +384,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "土耳其进行曲(莫扎特)",
|
"name": "土耳其进行曲(莫扎特)",
|
||||||
@@ -214,6 +393,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "The truth that you leave\n你离开的事实",
|
"name": "The truth that you leave\n你离开的事实",
|
||||||
@@ -222,6 +402,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/643670>@情如风雪如常<a/>分享乐谱 The truth that you leave",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/643670>@情如风雪如常<a/>分享乐谱 The truth that you leave",
|
||||||
"bpm" : 520,
|
"bpm" : 520,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 11
|
"pitchLevel": 11
|
||||||
}, {
|
}, {
|
||||||
"name": "名侦探柯南",
|
"name": "名侦探柯南",
|
||||||
@@ -230,6 +411,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/643670>@情如风雪如常<a/>分享乐谱 名侦探柯南",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/643670>@情如风雪如常<a/>分享乐谱 名侦探柯南",
|
||||||
"bpm" : 511,
|
"bpm" : 511,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 8
|
"pitchLevel": 8
|
||||||
}, {
|
}, {
|
||||||
"name": "Unity",
|
"name": "Unity",
|
||||||
@@ -238,6 +420,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "大鱼(简易)",
|
"name": "大鱼(简易)",
|
||||||
@@ -246,6 +429,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "嘿咻狂想曲",
|
"name": "嘿咻狂想曲",
|
||||||
@@ -254,6 +438,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "城南花已开",
|
"name": "城南花已开",
|
||||||
@@ -262,6 +447,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "撒野完整版",
|
"name": "撒野完整版",
|
||||||
@@ -270,6 +456,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 撒野完整版",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 撒野完整版",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "婚礼进行曲(整活用)",
|
"name": "婚礼进行曲(整活用)",
|
||||||
@@ -278,6 +465,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Graze the Roof",
|
"name": "Graze the Roof",
|
||||||
@@ -286,6 +474,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 8
|
"pitchLevel": 8
|
||||||
}, {
|
}, {
|
||||||
"name": "Only My Railgun",
|
"name": "Only My Railgun",
|
||||||
@@ -294,6 +483,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "生命之名(いのちの名前)",
|
"name": "生命之名(いのちの名前)",
|
||||||
@@ -302,6 +492,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n 生命之名(いのちの名前)\n(千と千寻の神隠し插曲One Summer’s Day完整版)\n这是我第一次的手编谱,可能有些音转的不完美。\nPs:这谱很长很长,而且越弹到后面越不对劲。",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n 生命之名(いのちの名前)\n(千と千寻の神隠し插曲One Summer’s Day完整版)\n这是我第一次的手编谱,可能有些音转的不完美。\nPs:这谱很长很长,而且越弹到后面越不对劲。",
|
||||||
"bpm" : 595,
|
"bpm" : 595,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 1
|
"pitchLevel": 1
|
||||||
}, {
|
}, {
|
||||||
"name": "Martin Ermen - River Flows in You",
|
"name": "Martin Ermen - River Flows in You",
|
||||||
@@ -310,6 +501,7 @@
|
|||||||
"desc": "没写outro",
|
"desc": "没写outro",
|
||||||
"bpm" : 572,
|
"bpm" : 572,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 4
|
"pitchLevel": 4
|
||||||
}, {
|
}, {
|
||||||
"name": "神々が恋した幻想郷(修改版)",
|
"name": "神々が恋した幻想郷(修改版)",
|
||||||
@@ -318,6 +510,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "猪八戒背媳妇(简易单指)",
|
"name": "猪八戒背媳妇(简易单指)",
|
||||||
@@ -326,6 +519,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "猪八戒背媳妇",
|
"name": "猪八戒背媳妇",
|
||||||
@@ -334,6 +528,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "夜的钢琴曲(五)",
|
"name": "夜的钢琴曲(五)",
|
||||||
@@ -342,6 +537,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
}, {
|
}, {
|
||||||
"name": "雨的印记(Kiss the Rain)",
|
"name": "雨的印记(Kiss the Rain)",
|
||||||
@@ -350,6 +546,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n 雨的印记(Kiss the Rain)\n初始手编作,更多谱子即将到来。",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n 雨的印记(Kiss the Rain)\n初始手编作,更多谱子即将到来。",
|
||||||
"bpm" : 225,
|
"bpm" : 225,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 9
|
"pitchLevel": 9
|
||||||
}, {
|
}, {
|
||||||
"name": "The Right Path",
|
"name": "The Right Path",
|
||||||
@@ -358,6 +555,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Danny (Minecraft BGM)",
|
"name": "[C418]Danny (Minecraft BGM)",
|
||||||
@@ -366,6 +564,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Wet Hands (Minecraft BGM)",
|
"name": "[C418]Wet Hands (Minecraft BGM)",
|
||||||
@@ -374,6 +573,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 9
|
"pitchLevel": 9
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Hal2 (Minecraft BGM)",
|
"name": "[C418]Hal2 (Minecraft BGM)",
|
||||||
@@ -382,6 +582,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "MIUI铃声(循环)",
|
"name": "MIUI铃声(循环)",
|
||||||
@@ -390,6 +591,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "美丽拍档(朱一旦枯燥曲)",
|
"name": "美丽拍档(朱一旦枯燥曲)",
|
||||||
@@ -398,6 +600,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Flower Dance",
|
"name": "Flower Dance",
|
||||||
@@ -406,6 +609,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 11
|
"pitchLevel": 11
|
||||||
}, {
|
}, {
|
||||||
"name": "不染",
|
"name": "不染",
|
||||||
@@ -414,6 +618,7 @@
|
|||||||
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 不染",
|
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 不染",
|
||||||
"bpm" : 150,
|
"bpm" : 150,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "赤岭",
|
"name": "赤岭",
|
||||||
@@ -422,6 +627,7 @@
|
|||||||
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 赤岭",
|
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 赤岭",
|
||||||
"bpm" : 145,
|
"bpm" : 145,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "大鱼海棠",
|
"name": "大鱼海棠",
|
||||||
@@ -430,6 +636,7 @@
|
|||||||
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 大鱼海棠",
|
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 大鱼海棠",
|
||||||
"bpm" : 123,
|
"bpm" : 123,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "失眠飞行t",
|
"name": "失眠飞行t",
|
||||||
@@ -438,6 +645,7 @@
|
|||||||
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 失眠飞行t",
|
"desc": "抖音用户@子哲啊🌈(zizhe1880689503)上传乐谱 失眠飞行t",
|
||||||
"bpm" : 200,
|
"bpm" : 200,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "千本桜",
|
"name": "千本桜",
|
||||||
@@ -446,6 +654,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "神々が恋した幻想郷",
|
"name": "神々が恋した幻想郷",
|
||||||
@@ -454,6 +663,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "Vicetone - Nevada",
|
"name": "Vicetone - Nevada",
|
||||||
@@ -462,6 +672,7 @@
|
|||||||
"desc": "Nevada SkyStudio钢琴版。\n内包含<u>比较复杂的和弦</u>,不适合手弹(笑\n你可以在SkyStudio的练习模式试试[狗头]",
|
"desc": "Nevada SkyStudio钢琴版。\n内包含<u>比较复杂的和弦</u>,不适合手弹(笑\n你可以在SkyStudio的练习模式试试[狗头]",
|
||||||
"bpm" : 497,
|
"bpm" : 497,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
}, {
|
}, {
|
||||||
"name": "TK from Ling tosite sigure - Unravel",
|
"name": "TK from Ling tosite sigure - Unravel",
|
||||||
@@ -470,6 +681,7 @@
|
|||||||
"desc": "TK from Ling tosite sigure - Unravel钢琴版。\n咕了很长时间的Unravel终于整完了\n难度适中(指比Nevada简单一点)\n有些地方实在不知道该怎么谱,所以有一点点瑕疵啦",
|
"desc": "TK from Ling tosite sigure - Unravel钢琴版。\n咕了很长时间的Unravel终于整完了\n难度适中(指比Nevada简单一点)\n有些地方实在不知道该怎么谱,所以有一点点瑕疵啦",
|
||||||
"bpm" : 530,
|
"bpm" : 530,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "[CL]だんご大家族",
|
"name": "[CL]だんご大家族",
|
||||||
@@ -478,6 +690,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 6
|
"pitchLevel": 6
|
||||||
}, {
|
}, {
|
||||||
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
|
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
|
||||||
@@ -486,6 +699,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "[钢琴曲]潮鸣り(原速)",
|
"name": "[钢琴曲]潮鸣り(原速)",
|
||||||
@@ -494,6 +708,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Lemon",
|
"name": "Lemon",
|
||||||
@@ -502,6 +717,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 Lemon",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 Lemon",
|
||||||
"bpm" : 500,
|
"bpm" : 500,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "克罗地亚狂想曲",
|
"name": "克罗地亚狂想曲",
|
||||||
@@ -510,6 +726,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 克罗地亚狂想曲",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 克罗地亚狂想曲",
|
||||||
"bpm" : 720,
|
"bpm" : 720,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
}, {
|
}, {
|
||||||
"name": "斗地主",
|
"name": "斗地主",
|
||||||
@@ -518,6 +735,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 斗地主",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 斗地主",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "黑人抬棺Astronomia",
|
"name": "黑人抬棺Astronomia",
|
||||||
@@ -526,6 +744,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 黑人抬棺Astronomia",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3005974>@深空失忆か<a/>分享乐谱 黑人抬棺Astronomia",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "简易茉莉花",
|
"name": "简易茉莉花",
|
||||||
@@ -534,6 +753,7 @@
|
|||||||
"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,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "大悲咒",
|
"name": "大悲咒",
|
||||||
@@ -542,6 +762,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 大悲咒",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 大悲咒",
|
||||||
"bpm" : 151,
|
"bpm" : 151,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
}, {
|
}, {
|
||||||
"name": "坏苹果",
|
"name": "坏苹果",
|
||||||
@@ -550,6 +771,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 坏苹果",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 坏苹果",
|
||||||
"bpm" : 720,
|
"bpm" : 720,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 6
|
"pitchLevel": 6
|
||||||
}, {
|
}, {
|
||||||
"name": "三葉",
|
"name": "三葉",
|
||||||
@@ -558,6 +780,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 三葉",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 三葉",
|
||||||
"bpm" : 318,
|
"bpm" : 318,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "亡灵序曲选节",
|
"name": "亡灵序曲选节",
|
||||||
@@ -566,6 +789,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 亡灵序曲选节",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 亡灵序曲选节",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 6
|
"pitchLevel": 6
|
||||||
}, {
|
}, {
|
||||||
"name": "天空之城",
|
"name": "天空之城",
|
||||||
@@ -574,6 +798,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 天空之城",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 天空之城",
|
||||||
"bpm" : 240,
|
"bpm" : 240,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
}, {
|
}, {
|
||||||
"name": "幻昼",
|
"name": "幻昼",
|
||||||
@@ -582,6 +807,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 幻昼",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 幻昼",
|
||||||
"bpm" : 281,
|
"bpm" : 281,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "烟花易冷",
|
"name": "烟花易冷",
|
||||||
@@ -590,6 +816,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 烟花易冷",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 烟花易冷",
|
||||||
"bpm" : 132,
|
"bpm" : 132,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 4
|
"pitchLevel": 4
|
||||||
}, {
|
}, {
|
||||||
"name": "菊次郎的夏天",
|
"name": "菊次郎的夏天",
|
||||||
@@ -598,6 +825,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 菊次郎的夏天",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 菊次郎的夏天",
|
||||||
"bpm" : 349,
|
"bpm" : 349,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 2
|
"pitchLevel": 2
|
||||||
}, {
|
}, {
|
||||||
"name": "起风了",
|
"name": "起风了",
|
||||||
@@ -606,6 +834,7 @@
|
|||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 起风了",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1286879>@Aex技术总监</a>分享乐谱 起风了",
|
||||||
"bpm" : 236,
|
"bpm" : 236,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
|
"keyCount": 15,
|
||||||
"pitchLevel": 6
|
"pitchLevel": 6
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
shared_sheets/Co_Chac_Yeu_La_Day-MTP.txt
Normal file
BIN
shared_sheets/Co_Chac_Yeu_La_Day-MTP.txt
Normal file
Binary file not shown.
BIN
shared_sheets/Dream_It_Possible.txt
Normal file
BIN
shared_sheets/Dream_It_Possible.txt
Normal file
Binary file not shown.
BIN
shared_sheets/Hanava.txt
Normal file
BIN
shared_sheets/Hanava.txt
Normal file
Binary file not shown.
BIN
shared_sheets/Love_5.txt
Normal file
BIN
shared_sheets/Love_5.txt
Normal file
Binary file not shown.
BIN
shared_sheets/Mojito.txt
Normal file
BIN
shared_sheets/Mojito.txt
Normal file
Binary file not shown.
BIN
shared_sheets/See_You_Again_(Stb).txt
Normal file
BIN
shared_sheets/See_You_Again_(Stb).txt
Normal file
Binary file not shown.
BIN
shared_sheets/Summertime.txt
Normal file
BIN
shared_sheets/Summertime.txt
Normal file
Binary file not shown.
BIN
shared_sheets/下雨天.txt
Normal file
BIN
shared_sheets/下雨天.txt
Normal file
Binary file not shown.
BIN
shared_sheets/不知所措.txt
Normal file
BIN
shared_sheets/不知所措.txt
Normal file
Binary file not shown.
BIN
shared_sheets/体面.txt
Normal file
BIN
shared_sheets/体面.txt
Normal file
Binary file not shown.
BIN
shared_sheets/微微.txt
Normal file
BIN
shared_sheets/微微.txt
Normal file
Binary file not shown.
BIN
shared_sheets/恋爱循环.txt
Normal file
BIN
shared_sheets/恋爱循环.txt
Normal file
Binary file not shown.
BIN
shared_sheets/演员.txt
Normal file
BIN
shared_sheets/演员.txt
Normal file
Binary file not shown.
BIN
shared_sheets/童话镇.txt
Normal file
BIN
shared_sheets/童话镇.txt
Normal file
Binary file not shown.
BIN
shared_sheets/走马.txt
Normal file
BIN
shared_sheets/走马.txt
Normal file
Binary file not shown.
BIN
shared_sheets/追光者.txt
Normal file
BIN
shared_sheets/追光者.txt
Normal file
Binary file not shown.
BIN
shared_sheets/那女孩对我说.txt
Normal file
BIN
shared_sheets/那女孩对我说.txt
Normal file
Binary file not shown.
@@ -31,7 +31,9 @@ const user_agreements =
|
|||||||
"1. SkyAutoPlayer(以下简称\"本脚本\")是完全免费且开源的软件/脚本(https://github.com/StageGuard/SkyAutoPlayerScript),禁止使用本脚本作为盈利用途!\n若你是从其他渠道购买获得的本脚本,那么就说明你被骗了!\n\n" +
|
"1. SkyAutoPlayer(以下简称\"本脚本\")是完全免费且开源的软件/脚本(https://github.com/StageGuard/SkyAutoPlayerScript),禁止使用本脚本作为盈利用途!\n若你是从其他渠道购买获得的本脚本,那么就说明你被骗了!\n\n" +
|
||||||
"2. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思),若因使用本脚本所出现了一些不友好的问题,与脚本作者StageGuard(以下简称\"作者\")无关。\n\n" +
|
"2. 本脚本仅可用作娱乐用途,请不要在正规场合使用本脚本(请自行体会\"正规场合\"是什么意思),若因使用本脚本所出现了一些不友好的问题,与脚本作者StageGuard(以下简称\"作者\")无关。\n\n" +
|
||||||
"3. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。\n\n" +
|
"3. 脚本只能给你一时满足感而不能使你进步,请适当使用,只有真正的技术才是王道,才能使你感到快乐。\n\n" +
|
||||||
"4. 本脚本的发行遵守GPLv3协议,若你不了解协议内容,请访问 https://www.gnu.org/licenses 查看"
|
"4. 本脚本只是一个\"弹奏机\",并不内置曲谱,请在GooglePlay下载SkyStudio编谱。\n\n" +
|
||||||
|
"5. 本脚本不会增加解密乐谱功能,包括但不限于加密的SkyStudio乐谱,加密的JS等,也不接受加密乐谱的共享。\n\n" +
|
||||||
|
"6. 本脚本的发行遵守GPLv3协议,若你不了解协议内容,请访问 https://www.gnu.org/licenses 查看"
|
||||||
;
|
;
|
||||||
|
|
||||||
//Script global scope
|
//Script global scope
|
||||||
@@ -88,7 +90,7 @@ sheetmgr = {
|
|||||||
return resultList;
|
return resultList;
|
||||||
},
|
},
|
||||||
|
|
||||||
downloadAndLoad: function(file, author, listener) {
|
downloadAndLoad: function(file, extraData, listener) {
|
||||||
listener({status:1});
|
listener({status:1});
|
||||||
config.fetchRepoFile("shared_sheets/" + file, null, function(body) {
|
config.fetchRepoFile("shared_sheets/" + file, null, function(body) {
|
||||||
var sheet = files.join(sheetmgr.rootDir, files.getNameWithoutExtension(file) + (function(length) {
|
var sheet = files.join(sheetmgr.rootDir, files.getNameWithoutExtension(file) + (function(length) {
|
||||||
@@ -103,7 +105,8 @@ sheetmgr = {
|
|||||||
files.write(sheet, parsed = (function() {
|
files.write(sheet, parsed = (function() {
|
||||||
var data = eval(body.string())[0];
|
var data = eval(body.string())[0];
|
||||||
listener({status:2});
|
listener({status:2});
|
||||||
data.author = author;
|
data.author = extraData.author;
|
||||||
|
data.keyCount = extraData.keyCount;
|
||||||
return "[" + JSON.stringify(data) + "]";
|
return "[" + JSON.stringify(data) + "]";
|
||||||
}()), sheetmgr.encoding);
|
}()), sheetmgr.encoding);
|
||||||
parsed = eval(parsed)[0];
|
parsed = eval(parsed)[0];
|
||||||
@@ -219,6 +222,8 @@ sheetplayer = {
|
|||||||
playing: false,
|
playing: false,
|
||||||
nextInterval: 0,
|
nextInterval: 0,
|
||||||
|
|
||||||
|
keyCount: 15,
|
||||||
|
|
||||||
speed: 1,
|
speed: 1,
|
||||||
current_speed_index: 9,
|
current_speed_index: 9,
|
||||||
speed_list: [
|
speed_list: [
|
||||||
@@ -259,11 +264,8 @@ sheetplayer = {
|
|||||||
run: function() {
|
run: function() {
|
||||||
var gestureMap = [];
|
var gestureMap = [];
|
||||||
sheetplayer.notes[sheetplayer.currentNote].keys.map(function(e, i) {
|
sheetplayer.notes[sheetplayer.currentNote].keys.map(function(e, i) {
|
||||||
gestureMap.push([
|
var keyCoordinates = sheetplayer.keyCount == 15 ? [config.values.key_coordinates15[e][0], config.values.key_coordinates15[e][1]] : [config.values.key_coordinates8[e][0], config.values.key_coordinates8[e][1]];
|
||||||
0, 25,
|
gestureMap.push([0, 25, keyCoordinates, keyCoordinates]);
|
||||||
[config.values.key_coordinates[e][0], config.values.key_coordinates[e][1]],
|
|
||||||
[config.values.key_coordinates[e][0], config.values.key_coordinates[e][1]]
|
|
||||||
]);
|
|
||||||
});
|
});
|
||||||
gestureMap = sheetplayer.toSource(gestureMap);
|
gestureMap = sheetplayer.toSource(gestureMap);
|
||||||
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
|
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
|
||||||
@@ -317,6 +319,7 @@ sheetplayer = {
|
|||||||
this.pitch = j.pitchLevel;
|
this.pitch = j.pitchLevel;
|
||||||
this.bpm = j.bpm;
|
this.bpm = j.bpm;
|
||||||
this.noteCount = this.notes.length;
|
this.noteCount = this.notes.length;
|
||||||
|
this.keyCount = j.keyCount;
|
||||||
},
|
},
|
||||||
|
|
||||||
toSource: function(obj) {
|
toSource: function(obj) {
|
||||||
@@ -342,16 +345,18 @@ config = {
|
|||||||
_global_storage: null,
|
_global_storage: null,
|
||||||
|
|
||||||
values: {
|
values: {
|
||||||
key_coordinates: [],
|
key_coordinates15: [],
|
||||||
|
key_coordinates8: [],
|
||||||
skipRunScriptTip: false,
|
skipRunScriptTip: false,
|
||||||
skipOpenWindowTip: false,
|
skipOpenWindowTip: false,
|
||||||
skipOpenPlayerPanelWindowTip: false,
|
skipOpenPlayerPanelWindowTip: false,
|
||||||
skipOnlineUploadTip: false,
|
skipOnlineUploadTip: false,
|
||||||
skipOnlineSharedSheetCTip: false,
|
skipOnlineSharedSheetCTip: false,
|
||||||
skipImportLocalSheetTip: false,
|
skipImportLocalSheetTip: false,
|
||||||
|
skipChangeKeyCountTip: false,
|
||||||
showFailedSheets: true,
|
showFailedSheets: true,
|
||||||
tipOnAndroidR: true,
|
tipOnAndroidR: true,
|
||||||
currentVersion: 14,
|
currentVersion: 15,
|
||||||
gitVersion: "",
|
gitVersion: "",
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -360,13 +365,15 @@ 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_coordinates15 = this._global_storage.get("key_coordinates15", this.values.key_coordinates15);
|
||||||
|
this.values.key_coordinates8 = this._global_storage.get("key_coordinates8", this.values.key_coordinates8);
|
||||||
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);
|
||||||
this.values.skipOpenPlayerPanelWindowTip = this._global_storage.get("skip_open_player_panel_window_tip", this.values.skipOpenPlayerPanelWindowTip);
|
this.values.skipOpenPlayerPanelWindowTip = this._global_storage.get("skip_open_player_panel_window_tip", this.values.skipOpenPlayerPanelWindowTip);
|
||||||
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.skipChangeKeyCountTip = this._global_storage.get("skip_change_key_count_tip", this.values.skipChangeKeyCountTip);
|
||||||
this.values.showFailedSheets = this._global_storage.get("show_failed_sheets", this.values.showFailedSheets);
|
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);
|
this.values.tipOnAndroidR = this._global_storage.get("tip_storage_on_android_r", this.values.tipOnAndroidR);
|
||||||
|
|
||||||
@@ -753,273 +760,273 @@ gui = {
|
|||||||
|
|
||||||
dialogs: {
|
dialogs: {
|
||||||
showDialog: function(layout, width, height, onDismiss, canExit) {
|
showDialog: function(layout, width, height, onDismiss, canExit) {
|
||||||
var frame, trans, params;
|
var frame, trans, params;
|
||||||
frame = new android.widget.FrameLayout(ctx);
|
frame = new android.widget.FrameLayout(ctx);
|
||||||
frame.setBackgroundColor(android.graphics.Color.argb(0x80, 0, 0, 0));
|
frame.setBackgroundColor(android.graphics.Color.argb(0x80, 0, 0, 0));
|
||||||
frame.setOnTouchListener(new android.view.View.OnTouchListener({
|
frame.setOnTouchListener(new android.view.View.OnTouchListener({
|
||||||
onTouch: function touch(v, e) {
|
onTouch: function touch(v, e) {
|
||||||
try {
|
try {
|
||||||
if (e.getAction() == e.ACTION_DOWN && canExit) {
|
if (e.getAction() == e.ACTION_DOWN && canExit) {
|
||||||
frame.setEnabled(false);
|
frame.setEnabled(false);
|
||||||
frame.setClickable(false);
|
frame.setClickable(false);
|
||||||
gui.utils.value_animation("Float", 1.0, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 1.0, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
frame.setAlpha(anim.getAnimatedValue());
|
frame.setAlpha(anim.getAnimatedValue());
|
||||||
if(anim.getAnimatedValue() == 0) {
|
if(anim.getAnimatedValue() == 0) {
|
||||||
if(onDismiss != null) onDismiss(frame);
|
if(onDismiss != null) onDismiss(frame);
|
||||||
gui.winMgr.removeView(frame);
|
gui.winMgr.removeView(frame);
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return false;
|
});
|
||||||
} catch (e) {
|
}
|
||||||
error(e);
|
return false;
|
||||||
return false;
|
} catch (e) {
|
||||||
}
|
error(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
layout.setLayoutParams(new android.widget.FrameLayout.LayoutParams(width, height, android.view.Gravity.CENTER));
|
||||||
|
layout.getLayoutParams().setMargins(20 * dp, 20 * dp, 20 * dp, 20 * dp);
|
||||||
|
frame.addView(layout);
|
||||||
|
gui.utils.value_animation("Float", 0, 1, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
frame.setAlpha(anim.getAnimatedValue());
|
||||||
|
});
|
||||||
|
layout.setElevation(16 * dp);
|
||||||
|
params = new android.view.WindowManager.LayoutParams();
|
||||||
|
params.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
||||||
|
if(!canExit) params.flags = android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
|
params.format = android.graphics.PixelFormat.TRANSLUCENT;
|
||||||
|
params.width = -1;
|
||||||
|
params.height = -1;
|
||||||
|
gui.winMgr.addView(frame, params);
|
||||||
|
return frame;
|
||||||
|
},
|
||||||
|
showProgressDialog: function self(f, isNoText, canExit) {
|
||||||
|
self.init = function(o) {
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
var layout = o.layout = new android.widget.LinearLayout(ctx);
|
||||||
|
layout.setOrientation(android.widget.LinearLayout.VERTICAL);
|
||||||
|
layout.setPadding(dp * 10, isNoText ? dp * 5 : dp * 10, dp * 10, isNoText ? dp * 5 : 0);
|
||||||
|
layout.setBackgroundColor(gui.config.colors.background);
|
||||||
|
if (!isNoText) {
|
||||||
|
var text = o.text = new android.widget.TextView(ctx);
|
||||||
|
text.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-2, -2));
|
||||||
|
text.setTextColor(gui.config.colors.text);
|
||||||
|
text.setPadding(dp * 10, dp * 10, dp * 10, dp * 10);
|
||||||
|
layout.addView(text);
|
||||||
|
}
|
||||||
|
var progress = o.progress = android.widget.ProgressBar(ctx, null, android.R.attr.progressBarStyleHorizontal);
|
||||||
|
layout.addView(progress);
|
||||||
|
o.popup = gui.dialogs.showDialog(layout, -2, -2, null, canExit);
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, self.controller = {
|
||||||
|
setText: function(s) {
|
||||||
|
if (isNoText) return;
|
||||||
|
var o = this;
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
o.text.setText(s);
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
}
|
}
|
||||||
}));
|
|
||||||
layout.setLayoutParams(new android.widget.FrameLayout.LayoutParams(width, height, android.view.Gravity.CENTER));
|
|
||||||
layout.getLayoutParams().setMargins(20 * dp, 20 * dp, 20 * dp, 20 * dp);
|
|
||||||
frame.addView(layout);
|
|
||||||
gui.utils.value_animation("Float", 0, 1, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
|
||||||
frame.setAlpha(anim.getAnimatedValue());
|
|
||||||
});
|
});
|
||||||
layout.setElevation(16 * dp);
|
|
||||||
params = new android.view.WindowManager.LayoutParams();
|
|
||||||
params.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
|
||||||
if(!canExit) params.flags = android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
|
||||||
params.format = android.graphics.PixelFormat.TRANSLUCENT;
|
|
||||||
params.width = -1;
|
|
||||||
params.height = -1;
|
|
||||||
gui.winMgr.addView(frame, params);
|
|
||||||
return frame;
|
|
||||||
},
|
},
|
||||||
showProgressDialog: function self(f, isNoText, canExit) {
|
setIndeterminate: function(b) {
|
||||||
self.init = function(o) {
|
var o = this;
|
||||||
gui.run(function() {
|
gui.run(function() {
|
||||||
try {
|
try {
|
||||||
var layout = o.layout = new android.widget.LinearLayout(ctx);
|
o.progress.setIndeterminate(b);
|
||||||
layout.setOrientation(android.widget.LinearLayout.VERTICAL);
|
} catch (e) {
|
||||||
layout.setPadding(dp * 10, isNoText ? dp * 5 : dp * 10, dp * 10, isNoText ? dp * 5 : 0);
|
error(e + " → " + e.lineNumber);
|
||||||
layout.setBackgroundColor(gui.config.colors.background);
|
}
|
||||||
if (!isNoText) {
|
});
|
||||||
var text = o.text = new android.widget.TextView(ctx);
|
},
|
||||||
text.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-2, -2));
|
setMax: function(max) {
|
||||||
text.setTextColor(gui.config.colors.text);
|
var o = this;
|
||||||
text.setPadding(dp * 10, dp * 10, dp * 10, dp * 10);
|
gui.run(function() {
|
||||||
layout.addView(text);
|
try {
|
||||||
|
o.progress.setMax(max);
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setProgress: function(prog) {
|
||||||
|
var o = this;
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
if (!o.progress.isIndeterminate()) {
|
||||||
|
o.progress.setProgress(prog, true);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
close: function() {
|
||||||
|
var o = this;
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
gui.utils.value_animation("Float", 1, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
o.popup.setAlpha(anim.getAnimatedValue());
|
||||||
|
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(o.popup);
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
async: function(f) {
|
||||||
|
var o = this;
|
||||||
|
var t = threads.start(function() {
|
||||||
|
try {
|
||||||
|
f(o);
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var o = Object.create(self.controller);
|
||||||
|
self.init(o);
|
||||||
|
if (f) o.async(f);
|
||||||
|
return o;
|
||||||
|
},
|
||||||
|
showConfirmDialog: function(s) {
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
var scr, layout, title, text, skip, onClick, dialog;
|
||||||
|
scr = new android.widget.ScrollView(ctx);
|
||||||
|
scr.setBackgroundColor(gui.config.colors.background);
|
||||||
|
layout = new android.widget.LinearLayout(ctx);
|
||||||
|
layout.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-2, -2));
|
||||||
|
layout.setOrientation(android.widget.LinearLayout.VERTICAL);
|
||||||
|
layout.setPadding(15 * dp, 15 * dp, 15 * dp, 5 * dp);
|
||||||
|
if (s.title) {
|
||||||
|
title = new android.widget.TextView(ctx);
|
||||||
|
title.setText(s.title);
|
||||||
|
title.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
||||||
|
title.setPadding(0, 0, 0, 10 * dp);
|
||||||
|
title.setTextColor(gui.config.colors.text);
|
||||||
|
title.setTextSize(16);
|
||||||
|
layout.addView(title);
|
||||||
|
}
|
||||||
|
if (s.text) {
|
||||||
|
text = new android.widget.TextView(ctx);
|
||||||
|
text.setText(s.text);
|
||||||
|
text.setPadding(0, 0, 0, 10 * dp);
|
||||||
|
text.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
||||||
|
text.setTextColor(gui.config.colors.sec_text);
|
||||||
|
text.setTextSize(14);
|
||||||
|
layout.addView(text);
|
||||||
|
}
|
||||||
|
if (s.skip) {
|
||||||
|
skip = new android.widget.CheckBox(ctx);
|
||||||
|
//skip.setChecked(Boolean(s.canSkip));
|
||||||
|
skip.setLayoutParams(android.widget.LinearLayout.LayoutParams(-2, -2, 0));
|
||||||
|
skip.getLayoutParams().setMargins(0, 0, 0, 10 * dp)
|
||||||
|
skip.setText("不再提示");
|
||||||
|
skip.setTextColor(gui.config.colors.sec_text)
|
||||||
|
layout.addView(skip);
|
||||||
|
}
|
||||||
|
onClick = function(i) {
|
||||||
|
if (s.skip) s.skip(skip.isChecked());
|
||||||
|
if (s.callback && s.callback(i)) return;
|
||||||
|
}
|
||||||
|
var closed = false;
|
||||||
|
s.buttons.map(function(e, i) {
|
||||||
|
var b = android.widget.TextView(ctx);
|
||||||
|
b.setId(i);
|
||||||
|
b.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
||||||
|
b.setText(String(e));
|
||||||
|
b.setGravity(android.view.Gravity.CENTER);
|
||||||
|
b.setPadding(10 * dp, 10 * dp, 10 * dp, 10 * dp);
|
||||||
|
b.setTextColor(gui.config.colors.text);
|
||||||
|
b.setTextSize(14);
|
||||||
|
b.measure(0, 0);
|
||||||
|
b.setBackgroundDrawable(gui.utils.ripple_drawable(b.getMeasuredWidth(), b.getMeasuredHeight(), "rect"));
|
||||||
|
b.setOnClickListener(new android.view.View.OnClickListener({
|
||||||
|
onClick: function f(v) {
|
||||||
|
try {if(closed != true) {
|
||||||
|
onClick(v.getId());
|
||||||
|
closed = true;
|
||||||
|
gui.winMgr.removeView(dialog);
|
||||||
|
return true;
|
||||||
|
}} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
}
|
}
|
||||||
var progress = o.progress = android.widget.ProgressBar(ctx, null, android.R.attr.progressBarStyleHorizontal);
|
}
|
||||||
layout.addView(progress);
|
}));
|
||||||
o.popup = gui.dialogs.showDialog(layout, -2, -2, null, canExit);
|
layout.addView(b);
|
||||||
|
return b;
|
||||||
|
});
|
||||||
|
scr.addView(layout);
|
||||||
|
dialog = gui.dialogs.showDialog(scr, -2, -2, null, (s.canExit != true ? false : true));
|
||||||
|
} catch (e) {
|
||||||
|
error(e + " → " + e.lineNumber);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showOperateDialog: function self(s, callback, canExit) {
|
||||||
|
gui.run(function() {
|
||||||
|
try {
|
||||||
|
var frame, list, dialog;
|
||||||
|
if (!self.adapter) {
|
||||||
|
self.adapter = function(e) {
|
||||||
|
e.view = new android.widget.LinearLayout(ctx);
|
||||||
|
e.view.setOrientation(android.widget.LinearLayout.VERTICAL);
|
||||||
|
e.view.setPadding(15 * dp, 15 * dp, 15 * dp, 15 * dp);
|
||||||
|
e.view.setLayoutParams(new android.widget.AbsListView.LayoutParams(-1, -2));
|
||||||
|
e._title = new android.widget.TextView(ctx);
|
||||||
|
e._title.setText(e.text);
|
||||||
|
e._title.setGravity(android.view.Gravity.CENTER | android.view.Gravity.LEFT);
|
||||||
|
e._title.setFocusable(false);
|
||||||
|
e._title.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
||||||
|
e._title.setTextSize(16);
|
||||||
|
e._title.setTextColor(gui.config.colors.text);
|
||||||
|
e.view.addView(e._title);
|
||||||
|
if (e.description) {
|
||||||
|
e._description = new android.widget.TextView(ctx);
|
||||||
|
e._description.setText(e.description);
|
||||||
|
e._description.setPadding(0, 3 * dp, 0, 0);
|
||||||
|
e._description.setLayoutParams(android.widget.LinearLayout.LayoutParams(-1, -2));
|
||||||
|
e._description.setTextSize(14);
|
||||||
|
e._description.setTextColor(gui.config.colors.sec_text);
|
||||||
|
e.view.addView(e._description);
|
||||||
|
}
|
||||||
|
return e.view;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
frame = new android.widget.FrameLayout(ctx);
|
||||||
|
frame.setPadding(5 * dp, 5 * dp, 5 * dp, 5 * dp);
|
||||||
|
frame.setBackgroundColor(gui.config.colors.background);
|
||||||
|
list = new android.widget.ListView(ctx);
|
||||||
|
list.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-1, -2));
|
||||||
|
list.setDividerHeight(0);
|
||||||
|
list.setAdapter(new RhinoListAdapter(s, self.adapter));
|
||||||
|
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
||||||
|
onItemClick: function(parent, view, pos, id) {
|
||||||
|
try {
|
||||||
|
if (callback && !callback(pos, s[pos])) gui.utils.value_animation("Float", 1, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
dialog.setAlpha(anim.getAnimatedValue());
|
||||||
|
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(dialog);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
error(e + " → " + e.lineNumber);
|
error(e + " → " + e.lineNumber);
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}, self.controller = {
|
|
||||||
setText: function(s) {
|
|
||||||
if (isNoText) return;
|
|
||||||
var o = this;
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
o.text.setText(s);
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
setIndeterminate: function(b) {
|
|
||||||
var o = this;
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
o.progress.setIndeterminate(b);
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
setMax: function(max) {
|
|
||||||
var o = this;
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
o.progress.setMax(max);
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
setProgress: function(prog) {
|
|
||||||
var o = this;
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
if (!o.progress.isIndeterminate()) {
|
|
||||||
o.progress.setProgress(prog, true);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
close: function() {
|
|
||||||
var o = this;
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
gui.utils.value_animation("Float", 1, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
|
||||||
o.popup.setAlpha(anim.getAnimatedValue());
|
|
||||||
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(o.popup);
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
async: function(f) {
|
|
||||||
var o = this;
|
|
||||||
var t = threads.start(function() {
|
|
||||||
try {
|
|
||||||
f(o);
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
}));
|
||||||
var o = Object.create(self.controller);
|
frame.addView(list);
|
||||||
self.init(o);
|
dialog = gui.dialogs.showDialog(frame, -1, -2, null, (canExit != true ? (typeof(canExit) != "boolean" ? true : false) : true));
|
||||||
if (f) o.async(f);
|
} catch (e) {
|
||||||
return o;
|
error(e + " → " + e.lineNumber);
|
||||||
},
|
}
|
||||||
showConfirmDialog: function(s) {
|
})
|
||||||
gui.run(function() {
|
},
|
||||||
try {
|
|
||||||
var scr, layout, title, text, skip, onClick, dialog;
|
|
||||||
scr = new android.widget.ScrollView(ctx);
|
|
||||||
scr.setBackgroundColor(gui.config.colors.background);
|
|
||||||
layout = new android.widget.LinearLayout(ctx);
|
|
||||||
layout.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-2, -2));
|
|
||||||
layout.setOrientation(android.widget.LinearLayout.VERTICAL);
|
|
||||||
layout.setPadding(15 * dp, 15 * dp, 15 * dp, 5 * dp);
|
|
||||||
if (s.title) {
|
|
||||||
title = new android.widget.TextView(ctx);
|
|
||||||
title.setText(s.title);
|
|
||||||
title.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
|
||||||
title.setPadding(0, 0, 0, 10 * dp);
|
|
||||||
title.setTextColor(gui.config.colors.text);
|
|
||||||
title.setTextSize(16);
|
|
||||||
layout.addView(title);
|
|
||||||
}
|
|
||||||
if (s.text) {
|
|
||||||
text = new android.widget.TextView(ctx);
|
|
||||||
text.setText(s.text);
|
|
||||||
text.setPadding(0, 0, 0, 10 * dp);
|
|
||||||
text.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
|
||||||
text.setTextColor(gui.config.colors.sec_text);
|
|
||||||
text.setTextSize(14);
|
|
||||||
layout.addView(text);
|
|
||||||
}
|
|
||||||
if (s.skip) {
|
|
||||||
skip = new android.widget.CheckBox(ctx);
|
|
||||||
//skip.setChecked(Boolean(s.canSkip));
|
|
||||||
skip.setLayoutParams(android.widget.LinearLayout.LayoutParams(-2, -2, 0));
|
|
||||||
skip.getLayoutParams().setMargins(0, 0, 0, 10 * dp)
|
|
||||||
skip.setText("不再提示");
|
|
||||||
skip.setTextColor(gui.config.colors.sec_text)
|
|
||||||
layout.addView(skip);
|
|
||||||
}
|
|
||||||
onClick = function(i) {
|
|
||||||
if (s.skip) s.skip(skip.isChecked());
|
|
||||||
if (s.callback && s.callback(i)) return;
|
|
||||||
}
|
|
||||||
var closed = false;
|
|
||||||
s.buttons.map(function(e, i) {
|
|
||||||
var b = android.widget.TextView(ctx);
|
|
||||||
b.setId(i);
|
|
||||||
b.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
|
||||||
b.setText(String(e));
|
|
||||||
b.setGravity(android.view.Gravity.CENTER);
|
|
||||||
b.setPadding(10 * dp, 10 * dp, 10 * dp, 10 * dp);
|
|
||||||
b.setTextColor(gui.config.colors.text);
|
|
||||||
b.setTextSize(14);
|
|
||||||
b.measure(0, 0);
|
|
||||||
b.setBackgroundDrawable(gui.utils.ripple_drawable(b.getMeasuredWidth(), b.getMeasuredHeight(), "rect"));
|
|
||||||
b.setOnClickListener(new android.view.View.OnClickListener({
|
|
||||||
onClick: function f(v) {
|
|
||||||
try {if(closed != true) {
|
|
||||||
onClick(v.getId());
|
|
||||||
closed = true;
|
|
||||||
gui.winMgr.removeView(dialog);
|
|
||||||
return true;
|
|
||||||
}} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
layout.addView(b);
|
|
||||||
return b;
|
|
||||||
});
|
|
||||||
scr.addView(layout);
|
|
||||||
dialog = gui.dialogs.showDialog(scr, -2, -2, null, (s.canExit != true ? false : true));
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
showOperateDialog: function self(s, callback, canExit) {
|
|
||||||
gui.run(function() {
|
|
||||||
try {
|
|
||||||
var frame, list, dialog;
|
|
||||||
if (!self.adapter) {
|
|
||||||
self.adapter = function(e) {
|
|
||||||
e.view = new android.widget.LinearLayout(ctx);
|
|
||||||
e.view.setOrientation(android.widget.LinearLayout.VERTICAL);
|
|
||||||
e.view.setPadding(15 * dp, 15 * dp, 15 * dp, 15 * dp);
|
|
||||||
e.view.setLayoutParams(new android.widget.AbsListView.LayoutParams(-1, -2));
|
|
||||||
e._title = new android.widget.TextView(ctx);
|
|
||||||
e._title.setText(e.text);
|
|
||||||
e._title.setGravity(android.view.Gravity.CENTER | android.view.Gravity.LEFT);
|
|
||||||
e._title.setFocusable(false);
|
|
||||||
e._title.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
|
||||||
e._title.setTextSize(16);
|
|
||||||
e._title.setTextColor(gui.config.colors.text);
|
|
||||||
e.view.addView(e._title);
|
|
||||||
if (e.description) {
|
|
||||||
e._description = new android.widget.TextView(ctx);
|
|
||||||
e._description.setText(e.description);
|
|
||||||
e._description.setPadding(0, 3 * dp, 0, 0);
|
|
||||||
e._description.setLayoutParams(android.widget.LinearLayout.LayoutParams(-1, -2));
|
|
||||||
e._description.setTextSize(14);
|
|
||||||
e._description.setTextColor(gui.config.colors.sec_text);
|
|
||||||
e.view.addView(e._description);
|
|
||||||
}
|
|
||||||
return e.view;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
frame = new android.widget.FrameLayout(ctx);
|
|
||||||
frame.setPadding(5 * dp, 5 * dp, 5 * dp, 5 * dp);
|
|
||||||
frame.setBackgroundColor(gui.config.colors.background);
|
|
||||||
list = new android.widget.ListView(ctx);
|
|
||||||
list.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-1, -2));
|
|
||||||
list.setDividerHeight(0);
|
|
||||||
list.setAdapter(new RhinoListAdapter(s, self.adapter));
|
|
||||||
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
|
||||||
onItemClick: function(parent, view, pos, id) {
|
|
||||||
try {
|
|
||||||
if (callback && !callback(pos, s[pos])) gui.utils.value_animation("Float", 1, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
|
||||||
dialog.setAlpha(anim.getAnimatedValue());
|
|
||||||
if(anim.getAnimatedValue() == 1) gui.winMgr.removeView(dialog);
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
frame.addView(list);
|
|
||||||
dialog = gui.dialogs.showDialog(frame, -1, -2, null, (canExit != true ? (typeof(canExit) != "boolean" ? true : false) : true));
|
|
||||||
} catch (e) {
|
|
||||||
error(e + " → " + e.lineNumber);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@@ -1515,7 +1522,7 @@ gui = {
|
|||||||
|
|
||||||
current_index: 0,
|
current_index: 0,
|
||||||
|
|
||||||
__internal_showTargetDots: function s() { gui.run(function(){
|
__internal_showTargetDots: function s(keyTargetedCbk, finishCbk) { gui.run(function(){
|
||||||
if(!gui.key_coordinate_navigation.isShowing) {
|
if(!gui.key_coordinate_navigation.isShowing) {
|
||||||
gui.key_coordinate_navigation._global_base = new android.widget.TextView(ctx);
|
gui.key_coordinate_navigation._global_base = new android.widget.TextView(ctx);
|
||||||
gui.key_coordinate_navigation._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
gui.key_coordinate_navigation._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
|
||||||
@@ -1537,7 +1544,7 @@ gui = {
|
|||||||
break;
|
break;
|
||||||
case event.ACTION_UP:
|
case event.ACTION_UP:
|
||||||
gui.key_coordinate_navigation._global_text.setText("键" + (gui.key_coordinate_navigation.current_index + 1) + "坐标已设置: [" + event.getRawX() + ", " + event.getRawY() + "]");
|
gui.key_coordinate_navigation._global_text.setText("键" + (gui.key_coordinate_navigation.current_index + 1) + "坐标已设置: [" + event.getRawX() + ", " + event.getRawY() + "]");
|
||||||
config.values.key_coordinates.push([event.getRawX(), event.getRawY()])
|
keyTargetedCbk([event.getRawX(), event.getRawY()]);
|
||||||
gui.utils.value_animation("Float", 1, 0, 200 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 1, 0, 200 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
gui.key_coordinate_navigation._global_base.setAlpha(anim.getAnimatedValue());
|
gui.key_coordinate_navigation._global_base.setAlpha(anim.getAnimatedValue());
|
||||||
gui.key_coordinate_navigation._global_text.setAlpha(1 - anim.getAnimatedValue());
|
gui.key_coordinate_navigation._global_text.setAlpha(1 - anim.getAnimatedValue());
|
||||||
@@ -1546,19 +1553,16 @@ gui = {
|
|||||||
gui.key_coordinate_navigation.isShowing = false;
|
gui.key_coordinate_navigation.isShowing = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
threads.start(function() {
|
var handler = new android.os.Handler();
|
||||||
java.lang.Thread.currentThread().sleep(1000);
|
handler.postDelayed(function() {
|
||||||
gui.run(function() {
|
if(++gui.key_coordinate_navigation.current_index < gui.key_coordinate_navigation.total) {
|
||||||
if(++gui.key_coordinate_navigation.current_index < 15) {
|
gui.key_coordinate_navigation.__internal_showTargetDots(keyTargetedCbk, finishCbk);
|
||||||
gui.key_coordinate_navigation.__internal_showTargetDots(gui.key_coordinate_navigation.current_index);
|
} else {
|
||||||
} else {
|
finishCbk();
|
||||||
config.save("key_coordinates");
|
gui.key_coordinate_navigation.__internal_dismissText();
|
||||||
toast("坐标设置已保存至存储!\n");
|
gui.main.show(2);
|
||||||
gui.key_coordinate_navigation.__internal_dismissText();
|
}
|
||||||
gui.main.show(2);
|
}, 1000);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1628,11 +1632,11 @@ gui = {
|
|||||||
}
|
}
|
||||||
})},
|
})},
|
||||||
|
|
||||||
show: function() {
|
show: function(keyCount, keyTargetedCbk, finishCbk) {
|
||||||
config.values.key_coordinates.length = 0;
|
|
||||||
gui.key_coordinate_navigation.current_index = 0;
|
gui.key_coordinate_navigation.current_index = 0;
|
||||||
|
gui.key_coordinate_navigation.total = keyCount ? keyCount : 15;
|
||||||
this.__internal_showTips();
|
this.__internal_showTips();
|
||||||
this.__internal_showTargetDots();
|
this.__internal_showTargetDots(keyTargetedCbk, finishCbk);
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -2088,18 +2092,47 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.v_play.setBackgroundDrawable(gui.utils.ripple_drawable(element.v_play.getMeasuredWidth(), element.v_play.getMeasuredHeight(), "rect"));
|
element.v_play.setBackgroundDrawable(gui.utils.ripple_drawable(element.v_play.getMeasuredWidth(), element.v_play.getMeasuredHeight(), "rect"));
|
||||||
element.v_play.setOnClickListener(new android.view.View.OnClickListener({
|
element.v_play.setOnClickListener(new android.view.View.OnClickListener({
|
||||||
onClick: function() {
|
onClick: function() {
|
||||||
if(config.values.key_coordinates.length == 15 && gui.main.isShowing) {
|
if(gui.main.isShowing) {
|
||||||
gui.main.__internal_dismiss();
|
if(!element.keyCount) {
|
||||||
gui.player_panel.__internal_showPanel(element);
|
gui.dialogs.showConfirmDialog({
|
||||||
} else {
|
title: "设置键位数",
|
||||||
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标");
|
text: "这是一个本地乐谱,请设置这个乐谱的键位数",
|
||||||
|
canExit: true,
|
||||||
|
buttons: ["8 键位", "15 键位"],
|
||||||
|
callback: function(id) {
|
||||||
|
files.write(files.join(sheetmgr.rootDir, element.fileName), (function() {
|
||||||
|
var readable = files.open(files.join(sheetmgr.rootDir, element.fileName), "r", sheetmgr.encoding);
|
||||||
|
var parsed = eval(readable.read())[0];
|
||||||
|
readable.close();
|
||||||
|
parsed.keyCount = id == 0 ? (element.keyCount = 8) : (element.keyCount = 15)
|
||||||
|
return "[" + JSON.stringify(parsed) + "]";
|
||||||
|
}()), sheetmgr.encoding);
|
||||||
|
toast("已将 " + element.name + " 设置为 " + element.keyCount + " 键乐谱\n请再次点击弹奏按钮。\n长按乐谱以重新设置键位数。");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
switch(element.keyCount) {
|
||||||
|
case 8: {
|
||||||
|
if(config.values.key_coordinates8.length != 8) {
|
||||||
|
toast("未设置8键键位坐标或坐标数据错误,请前往设置页设置键位坐标");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};break;
|
||||||
|
case 15: {
|
||||||
|
if(config.values.key_coordinates15.length != 15) {
|
||||||
|
toast("未设置15键键位坐标或坐标数据错误,请前往设置页设置键位坐标");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};break;
|
||||||
|
}
|
||||||
|
gui.main.__internal_dismiss();
|
||||||
|
gui.player_panel.__internal_showPanel(element);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
element.v_relative.addView(element.v_play);
|
element.v_relative.addView(element.v_play);
|
||||||
}
|
}
|
||||||
element.v_delete = new android.widget.ImageView(ctx);
|
element.v_delete = new android.widget.ImageView(ctx);
|
||||||
@@ -2142,7 +2175,8 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
s.ns0_listView.setAdapter(s.ns0_listAdapterController.self);
|
s.ns0_listView.setAdapter(s.ns0_listAdapterController.self);
|
||||||
s.ns0_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
s.ns0_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
||||||
onItemClick: function(parent, view, pos, id) {
|
onItemClick: function(parent, view, pos, id) {
|
||||||
var item = s.ns0_listAdapterController.get(pos);if(item.type == -1) {
|
var item = s.ns0_listAdapterController.get(pos);
|
||||||
|
if(item.type == -1) {
|
||||||
switch(item.index) {
|
switch(item.index) {
|
||||||
case 0: {
|
case 0: {
|
||||||
gui.dialogs.showConfirmDialog({
|
gui.dialogs.showConfirmDialog({
|
||||||
@@ -2169,6 +2203,24 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 1: {
|
||||||
|
gui.dialogs.showConfirmDialog({
|
||||||
|
title: "修改乐谱键位数",
|
||||||
|
text: "版本15增加了对不同键位乐器(8键位和15键位)乐谱的支持,它们使用不同的坐标数据。\n" +
|
||||||
|
"当前已存储在本地的乐谱(外部导入的乐谱或在版本15之前从共享乐谱下载的乐谱),它们没有键位信息,SkyAutoPlayerScript无法确认它是8键位乐谱还是15键位乐谱。\n" +
|
||||||
|
"共享乐谱信息已更新,现在下载的共享乐谱它已经包含了乐谱键位信息,不需要再设置。\n" +
|
||||||
|
"点击开始弹奏按钮时,若无键位信息,则会弹出对话框以选择乐谱键位,SkyAutoPlayerScript会保存键位信息到乐谱。\n" +
|
||||||
|
"如果因为一些原因设置了错误的键位信息,可以长按乐谱来重新设置。\n\n" +
|
||||||
|
"p.s.: 需要重新设置15键键位坐标。",
|
||||||
|
canExit: true,
|
||||||
|
skip: function(checked) {
|
||||||
|
config.values.skipChangeKeyCountTip = config.save("skip_change_key_count_tip", checked);
|
||||||
|
if(checked) s.ns0_listAdapterController.removeByIndex(pos, true);
|
||||||
|
},
|
||||||
|
buttons: ["确认"]
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2251,6 +2303,30 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
}()), -2, -2, null, true);
|
}()), -2, -2, null, true);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
s.ns0_listView.setOnItemLongClickListener(new android.widget.AdapterView.OnItemLongClickListener({
|
||||||
|
onItemLongClick: function(parent, view, pos, id) {
|
||||||
|
var item = s.ns0_listAdapterController.get(pos);
|
||||||
|
if(!item.failed && item.type == 0) {
|
||||||
|
gui.dialogs.showConfirmDialog({
|
||||||
|
title: "设置键位数",
|
||||||
|
text: "这是一个本地乐谱,请设置这个乐谱的键位数",
|
||||||
|
canExit: true,
|
||||||
|
buttons: ["8 键位", "15 键位"],
|
||||||
|
callback: function(id) {
|
||||||
|
files.write(files.join(sheetmgr.rootDir, item.fileName), (function() {
|
||||||
|
var readable = files.open(files.join(sheetmgr.rootDir, item.fileName), "r", sheetmgr.encoding);
|
||||||
|
var parsed = eval(readable.read())[0];
|
||||||
|
readable.close();
|
||||||
|
parsed.keyCount = id == 0 ? (item.keyCount = 8) : (item.keyCount = 15)
|
||||||
|
return "[" + JSON.stringify(parsed) + "]";
|
||||||
|
}()), sheetmgr.encoding);
|
||||||
|
toast("已将 " + item.name + " 设置为 " + item.keyCount + " 键乐谱\n请再次点击弹奏按钮。\n长按乐谱以重新设置键位数。");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
}));
|
||||||
s.ns0_rl.addView(s.ns0_listView);
|
s.ns0_rl.addView(s.ns0_listView);
|
||||||
|
|
||||||
s.ns0_progress = new android.widget.ProgressBar(ctx, null, android.R.attr.progressBarStyleHorizontal);
|
s.ns0_progress = new android.widget.ProgressBar(ctx, null, android.R.attr.progressBarStyleHorizontal);
|
||||||
@@ -2287,6 +2363,11 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
title: "如何导入本地乐谱",
|
title: "如何导入本地乐谱",
|
||||||
index: 0
|
index: 0
|
||||||
});//上传乐谱提示
|
});//上传乐谱提示
|
||||||
|
if(!config.values.skipChangeKeyCountTip) s.ns0_listAdapterController.add({
|
||||||
|
type: -1,
|
||||||
|
title: "修改乐谱键位数",
|
||||||
|
index: 1
|
||||||
|
});//修改乐谱键位提示
|
||||||
s.ns0_listAdapterController.notifyChange();
|
s.ns0_listAdapterController.notifyChange();
|
||||||
threads.start(function() {
|
threads.start(function() {
|
||||||
sheetmgr.getLocalSheetList(isForce, function(successCount, failedCount) {
|
sheetmgr.getLocalSheetList(isForce, function(successCount, failedCount) {
|
||||||
@@ -2295,10 +2376,11 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
});
|
});
|
||||||
}).map(function(e, i) {
|
}).map(function(e, i) {
|
||||||
gui.run(function(){
|
gui.run(function(){
|
||||||
if(!e.failed) {
|
if(!e.failed || config.values.showFailedSheets) {
|
||||||
s.ns0_listAdapterController.add(e);
|
s.ns0_listAdapterController.add((function(item) {
|
||||||
} else if(config.values.showFailedSheets){
|
item.type = 0;
|
||||||
s.ns0_listAdapterController.add(e);
|
return item;
|
||||||
|
}(e)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -2433,7 +2515,7 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.download.setBackgroundDrawable(gui.utils.ripple_drawable(element.download.getMeasuredWidth(), element.download.getMeasuredHeight(), "rect"));
|
element.download.setBackgroundDrawable(gui.utils.ripple_drawable(element.download.getMeasuredWidth(), element.download.getMeasuredHeight(), "rect"));
|
||||||
element.download.setOnClickListener(new android.view.View.OnClickListener({
|
element.download.setOnClickListener(new android.view.View.OnClickListener({
|
||||||
onClick: function() { threads.start(function() {
|
onClick: function() { threads.start(function() {
|
||||||
if(!element.isShowingStatusBar) sheetmgr.downloadAndLoad(element.file, element.author, function(r) {
|
if(!element.isShowingStatusBar) sheetmgr.downloadAndLoad(element.file, {author: element.author, keyCount: element.keyCount}, function(r) {
|
||||||
switch(r.status) {
|
switch(r.status) {
|
||||||
case 1: {
|
case 1: {
|
||||||
gui.run(function() {
|
gui.run(function() {
|
||||||
@@ -2795,10 +2877,29 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
name: "基本设置",
|
name: "基本设置",
|
||||||
}, {
|
}, {
|
||||||
type: "default",
|
type: "default",
|
||||||
name: "设置键位坐标",
|
name: "设置8键盘键位坐标",
|
||||||
onClick: function(v) {
|
onClick: function(v) {
|
||||||
gui.main.__internal_dismiss();
|
gui.main.__internal_dismiss();
|
||||||
gui.key_coordinate_navigation.show();
|
config.values.key_coordinates8.length = 0;
|
||||||
|
gui.key_coordinate_navigation.show(8, function(value) {
|
||||||
|
config.values.key_coordinates8.push(value);
|
||||||
|
}, function() {
|
||||||
|
config.save("key_coordinates8");
|
||||||
|
toast("坐标设置已保存至存储!");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: "default",
|
||||||
|
name: "设置15键盘键位坐标",
|
||||||
|
onClick: function(v) {
|
||||||
|
gui.main.__internal_dismiss();
|
||||||
|
config.values.key_coordinates15.length = 0;
|
||||||
|
gui.key_coordinate_navigation.show(15, function(value) {
|
||||||
|
config.values.key_coordinates15.push(value);
|
||||||
|
}, function() {
|
||||||
|
config.save("key_coordinates15");
|
||||||
|
toast("坐标设置已保存至存储!");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
@@ -2857,7 +2958,7 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
try {
|
try {
|
||||||
android.os.Build.VERSION_CODES.R
|
android.os.Build.VERSION_CODES.R
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
sList.list.splice(3, 1);
|
sList.list.splice(4, 1);
|
||||||
}
|
}
|
||||||
return sList.list;
|
return sList.list;
|
||||||
}()), function self(element) {
|
}()), function self(element) {
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
|
版本: 15
|
||||||
|
更新时间: 2020.10.01 00:00
|
||||||
|
更新内容:
|
||||||
|
* 新增:8键位乐谱支持
|
||||||
|
|
||||||
版本: 14
|
版本: 14
|
||||||
更新时间: 2020.09.03 20:51
|
更新时间: 2020.09.13 20:51
|
||||||
更新内容:
|
更新内容:
|
||||||
* 新增:共享乐谱支持搜索功能
|
* 新增:共享乐谱支持搜索功能
|
||||||
* 改善:窗口拓展功能
|
* 改善:窗口拓展功能
|
||||||
|
|||||||
Reference in New Issue
Block a user