Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9cbc2348f | ||
|
|
13979f81ae | ||
|
|
8ff1de8e21 | ||
|
|
383d79f95b | ||
|
|
93918c8a8a | ||
|
|
8f737fa07b | ||
|
|
32d83d3b3d | ||
|
|
ae090a2141 | ||
|
|
e9dc16cf9d | ||
|
|
d88424e659 | ||
|
|
07e17626a3 | ||
|
|
adca548b63 | ||
|
|
e5d024e2d2 | ||
|
|
2d44ba080b | ||
|
|
aeae50875b | ||
|
|
e9a4662001 | ||
|
|
3b83a9b113 | ||
|
|
8aa4db993f | ||
|
|
a01cf1ab08 | ||
|
|
c45c75bad3 | ||
|
|
d12e9f24ff | ||
|
|
dc719756ad | ||
|
|
56d33ac0af | ||
|
|
5689142309 | ||
|
|
401f221b04 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.vscode/settings.json
|
||||||
|
.vscode/tasks.json
|
||||||
49
README.md
49
README.md
@@ -1,3 +1,5 @@
|
|||||||
|
# 关于脚本倒卖的问题: [#1](https://github.com/StageGuard/SkyAutoPlayerScript/issues/1)
|
||||||
|
|
||||||
# SkyAutoPlayerScript
|
# SkyAutoPlayerScript
|
||||||
A script to play Sheets generated by SkyStudio automatically in game Sky with accessibility services using Auto.js
|
A script to play Sheets generated by SkyStudio automatically in game Sky with accessibility services using Auto.js
|
||||||
</br>使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)导出的曲谱
|
</br>使用Auto.js提供的无障碍权限实现在Sky光遇中自动弹奏[SkyStudio](https://play.google.com/store/apps/details?id=com.Maple.SkyStudio)导出的曲谱
|
||||||
@@ -13,8 +15,10 @@ A script to play Sheets generated by SkyStudio automatically in game Sky with ac
|
|||||||
* ...
|
* ...
|
||||||
|
|
||||||
## 使用
|
## 使用
|
||||||
①为Auto.js开启**无障碍服务**和**悬浮窗权限**。
|
<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中新建一个脚本并粘贴以下代码并运行:
|
<br>手机请下载`autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
|
||||||
|
<br>②为Auto.js开启**无障碍服务**和**悬浮窗权限**。
|
||||||
|
<br>③在Auto.js中新建一个脚本并粘贴以下代码并运行:
|
||||||
```javascript
|
```javascript
|
||||||
"ui";
|
"ui";
|
||||||
"use strict";
|
"use strict";
|
||||||
@@ -40,17 +44,17 @@ 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`)
|
||||||
</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>手机请下载`autoJs-V4.1.1.Alpha2-common-armeabi-v7a-debug.apk`
|
|
||||||
|
|
||||||
### 清除数据
|
## 清除数据
|
||||||
SkyAutoPlayer在使用过程中会产生本地数据存储,若想全部删除,请使用Auto.js执行以下代码
|
SkyAutoPlayer在使用过程中会产生本地数据存储,若想全部删除,请使用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/");
|
||||||
```
|
```
|
||||||
|
|
||||||
## 上传乐谱
|
<br>
|
||||||
|
|
||||||
|
# 上传乐谱
|
||||||
|
|
||||||
你可以fork本仓库,将你要上传的乐谱添加至`shared_sheets`文件夹,并按照以下要求在`shared_sheets.json`添加项目
|
你可以fork本仓库,将你要上传的乐谱添加至`shared_sheets`文件夹,并按照以下要求在`shared_sheets.json`添加项目
|
||||||
```javascript
|
```javascript
|
||||||
@@ -75,8 +79,9 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
修改完成后,申请`Pull Request`,等待merge即可。
|
修改完成后,申请`Pull Request`,等待merge即可。
|
||||||
> 请注意:在申请`Pull Request`之前请确保你的SkyAutoPlayerScript仓库已同步至最新,以免出现意外问题!
|
> 请注意:在申请`Pull Request`之前请确保你的SkyAutoPlayerScript仓库已同步至最新,以免出现意外问题!
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
## 注意
|
# 注意
|
||||||
### 请仔细阅读以下使用须知!
|
### 请仔细阅读以下使用须知!
|
||||||
|
|
||||||
1. 未充分测试,若遇到BUG,请酷安私信@StageGuard或新建Issue来反馈BUG!
|
1. 未充分测试,若遇到BUG,请酷安私信@StageGuard或新建Issue来反馈BUG!
|
||||||
@@ -85,16 +90,38 @@ files.removeDir("/storage/emulated/0/Documents/SkyAutoPlayer/");
|
|||||||
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)编谱。
|
||||||
|
|
||||||
## 贡献
|
# 贡献
|
||||||
欢迎任何人贡献本项目,包括但不限于Pull Request,Issue,New feature request
|
欢迎任何人贡献本项目,包括但不限于Pull Request,Issue,New feature request
|
||||||
|
|
||||||
## 图标来源
|
## 贡献者名单(按照首次贡献时间排序)
|
||||||
|
|
||||||
|
### SkyAutoPlayerScript
|
||||||
|
无
|
||||||
|
|
||||||
|
### 共享乐谱
|
||||||
|
酷安[@Aex技术总监](http://www.coolapk.com/u/1286879)<br>
|
||||||
|
酷安[@夏卡卡卡](http://www.coolapk.com/u/2313452)<br>
|
||||||
|
酷安[@深空失忆か](http://www.coolapk.com/u/3005974)<br>
|
||||||
|
抖音@子哲啊🌈(zizhe1880689503)<br>
|
||||||
|
酷安[@你们很有趣呢](http://www.coolapk.com/u/2416229)<br>
|
||||||
|
酷安[@情如风雪无常](http://www.coolapk.com/u/643670)<br>
|
||||||
|
酷安[@慕疵](http://www.coolapk.com/u/3286967)<br>
|
||||||
|
酷安[@社区最弱萌新](http://www.coolapk.com/u/3291313)<br>
|
||||||
|
酷安[@九方辰](http://www.coolapk.com/u/634078)<br>
|
||||||
|
酷安[@北极马可罗尼](http://www.coolapk.com/u/463478)<br>
|
||||||
|
酷安[@UTF16](http://www.coolapk.com/u/3751911)<br>
|
||||||
|
酷安[@]()<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
# 图标来源
|
||||||
[Iconfont-阿里巴巴矢量图标库](https://www.iconfont.cn/)
|
[Iconfont-阿里巴巴矢量图标库](https://www.iconfont.cn/)
|
||||||
|
<br>
|
||||||
|
|
||||||
## 鸣谢
|
# 鸣谢
|
||||||
[projectXero](https://gitee.com/projectXero) (提供适用于Rhino的`ListAdapter`)
|
[projectXero](https://gitee.com/projectXero) (提供适用于Rhino的`ListAdapter`)
|
||||||
|
<br>
|
||||||
|
|
||||||
## 许可证协议
|
# 许可证协议
|
||||||
```
|
```
|
||||||
SkyAutoPlayer (Auto.js script)
|
SkyAutoPlayer (Auto.js script)
|
||||||
Copyright © 2020 StageGuard
|
Copyright © 2020 StageGuard
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
51b2da7101aebf7427b4f4a0ab4814f7f6dc60b5
|
13979f81ae3a4e415446100d56b9499592d89b8d
|
||||||
BIN
resources/filter.png
Normal file
BIN
resources/filter.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
BIN
resources/search.png
Normal file
BIN
resources/search.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
@@ -1,5 +1,197 @@
|
|||||||
{
|
{
|
||||||
"sheets": [{
|
"sheets": [{
|
||||||
|
"name": "极乐净土(和弦)",
|
||||||
|
"file": "极乐净土(和弦).txt",
|
||||||
|
"author": "酷安@Syngene",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngene<a/>分享乐谱 极乐净土(和弦)",
|
||||||
|
"bpm" : 532,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "极乐净土(无和弦)",
|
||||||
|
"file": "极乐净土(无和弦).txt",
|
||||||
|
"author": "酷安@Syngene",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/1093421>@Syngene<a/>分享乐谱 极乐净土(无和弦)",
|
||||||
|
"bpm" : 532,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "阿珍爱上了阿强",
|
||||||
|
"file": "阿珍爱上了阿强_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 阿珍爱上了阿强",
|
||||||
|
"bpm" : 197,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "虫儿飞儿歌",
|
||||||
|
"file": "虫儿飞儿歌_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 虫儿飞儿歌",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "辞乆门回忆",
|
||||||
|
"file": "辞乆门回忆_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 辞乆门回忆",
|
||||||
|
"bpm" : 270,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "打上花火",
|
||||||
|
"file": "打上花火_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 打上花火",
|
||||||
|
"bpm" : 300,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "大悲咒",
|
||||||
|
"file": "大悲咒_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 大悲咒",
|
||||||
|
"bpm" : 230,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "好运来HX",
|
||||||
|
"file": "好运来HX_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 好运来HX",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "幻昼CH",
|
||||||
|
"file": "幻昼CH_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 幻昼CH",
|
||||||
|
"bpm" : 200,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "偏爱",
|
||||||
|
"file": "偏爱_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 偏爱",
|
||||||
|
"bpm" : 220,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "四月是你的谎言",
|
||||||
|
"file": "四月是你的谎言_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 四月是你的谎言",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "误红装A1",
|
||||||
|
"file": "误红装A1_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 误红装A1",
|
||||||
|
"bpm" : 200,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "夏天的风",
|
||||||
|
"file": "夏天的风_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 夏天的风",
|
||||||
|
"bpm" : 220,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "夏天的风GF",
|
||||||
|
"file": "夏天的风GF_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 夏天的风GF",
|
||||||
|
"bpm" : 220,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "小星星",
|
||||||
|
"file": "小星星_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 小星星",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "心作",
|
||||||
|
"file": "心作_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 心作",
|
||||||
|
"bpm" : 240,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "雨林",
|
||||||
|
"file": "雨林_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 雨林",
|
||||||
|
"bpm" : 249,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "猪猪侠",
|
||||||
|
"file": "猪猪侠_UTF16.txt",
|
||||||
|
"author": "酷安@UTF16",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/3751911>@UTF16<a/>分享乐谱 猪猪侠",
|
||||||
|
"bpm" : 280,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "もペもぺ(mopemope)",
|
||||||
|
"file": "もペもぺ(mopemope).txt",
|
||||||
|
"author": "酷安@夏卡卡卡",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 もペもぺ(mopemope)\n一首音游玩家熟悉的、好听的儿歌(并不)\n非完整版",
|
||||||
|
"bpm" : 400,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 7
|
||||||
|
}, {
|
||||||
|
"name": "[IPhone]马林巴琴",
|
||||||
|
"file": "IPhone马林巴琴.txt",
|
||||||
|
"author": "酷安@夏卡卡卡",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [IPhone]马林巴琴",
|
||||||
|
"bpm" : 660,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "穿越时空的思念",
|
||||||
|
"file": "穿越时空的思念.txt",
|
||||||
|
"author": "酷安@北极马可罗尼",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/463478>@北极马可罗尼<a/>分享乐谱 穿越时空的思念",
|
||||||
|
"bpm" : 160,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "不染",
|
||||||
|
"file": "不染_enhanced.txt",
|
||||||
|
"author": "酷安@九方辰",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/634078>酷安@九方辰<a/>分享乐谱 不染\n原作者为 抖音用户@子哲啊🌈(zizhe1880689503) \n 完善后续,修改了杂音",
|
||||||
|
"bpm" : 150,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
|
"name": "Souvevirs d'Enfance\n童年的回忆",
|
||||||
|
"file": "Souvevirs_d'Enfance.txt",
|
||||||
|
"author": "酷安@你们很有趣呢",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2416229>酷安@你们很有趣呢<a/>分享乐谱\n Souvevirs d'Enfance(童年的回忆)\n作者:理查德·克莱德曼(Richard Clayderman)又名爱的记忆\n曲子比原曲慢了一点点,建议加速播放",
|
||||||
|
"bpm" : 720,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 7
|
||||||
|
}, {
|
||||||
|
"name": "Canon卡农 C大调 简易版",
|
||||||
|
"file": "Canon卡农_C大调_简易版.txt",
|
||||||
|
"author": "酷安@夏卡卡卡",
|
||||||
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Canon卡农 C大调 简易版",
|
||||||
|
"bpm" : 300,
|
||||||
|
"suggested_instrument": 1,
|
||||||
|
"pitchLevel": 0
|
||||||
|
}, {
|
||||||
"name": "九九八十一",
|
"name": "九九八十一",
|
||||||
"file": "九九八十一.txt",
|
"file": "九九八十一.txt",
|
||||||
"author": "酷安@慕疵",
|
"author": "酷安@慕疵",
|
||||||
@@ -10,16 +202,16 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "Коробейники (货郎)\n俄罗斯方块BGM",
|
"name": "Коробейники (货郎)\n俄罗斯方块BGM",
|
||||||
"file": "Коробейники.txt",
|
"file": "Коробейники.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Коробейники (货郎)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Коробейники (货郎)",
|
||||||
"bpm" : 720,
|
"bpm" : 720,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "土耳其进行曲(莫扎特)",
|
"name": "土耳其进行曲(莫扎特)",
|
||||||
"file": "土耳其进行曲(莫扎特).txt",
|
"file": "土耳其进行曲(莫扎特).txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 土耳其进行曲(莫扎特)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 土耳其进行曲(莫扎特)",
|
||||||
"bpm" : 528,
|
"bpm" : 528,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
@@ -42,32 +234,32 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "Unity",
|
"name": "Unity",
|
||||||
"file": "Unity.txt",
|
"file": "Unity.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Unity",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Unity",
|
||||||
"bpm" : 600,
|
"bpm" : 600,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "大鱼(简易)",
|
"name": "大鱼(简易)",
|
||||||
"file": "大鱼(简易).txt",
|
"file": "大鱼(简易).txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 大鱼(简易)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 大鱼(简易)",
|
||||||
"bpm" : 288,
|
"bpm" : 288,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "嘿咻狂想曲",
|
"name": "嘿咻狂想曲",
|
||||||
"file": "嘿咻狂想曲.txt",
|
"file": "嘿咻狂想曲.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 嘿咻狂想曲\n<b>I love you🎵 , I miss you🎵</b>\n<u>建议在雨林右侧副本的隐藏图(两人掉下去那个),释放蝴蝶后弹奏</u>",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 嘿咻狂想曲\n<b>I love you🎵 , I miss you🎵</b>\n<u>建议在雨林右侧副本的隐藏图(两人掉下去那个),释放蝴蝶后弹奏</u>",
|
||||||
"bpm" : 480,
|
"bpm" : 480,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "城南花已开",
|
"name": "城南花已开",
|
||||||
"file": "城南花已开.txt",
|
"file": "城南花已开.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 城南花已开",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 城南花已开",
|
||||||
"bpm" : 480,
|
"bpm" : 480,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
@@ -82,24 +274,24 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "婚礼进行曲(整活用)",
|
"name": "婚礼进行曲(整活用)",
|
||||||
"file": "婚礼进行曲(整活用).txt",
|
"file": "婚礼进行曲(整活用).txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 婚礼进行曲(整活用)(简易版)\n<b>不推荐在别人递白蜡烛🕯时使用,因为会导致画面极度生草,且伴有顺着网线被暴打一顿的风险,没听懂的话我再强调一遍( 滑稽 )</b>",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 婚礼进行曲(整活用)(简易版)\n<b>不推荐在别人递白蜡烛🕯时使用,因为会导致画面极度生草,且伴有顺着网线被暴打一顿的风险,没听懂的话我再强调一遍( 滑稽 )</b>",
|
||||||
"bpm" : 280,
|
"bpm" : 280,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Graze the Roof",
|
"name": "Graze the Roof",
|
||||||
"file": "Graze_the_Roof.txt",
|
"file": "Graze_the_Roof.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Graze the Roof\n游戏《植物大战僵尸》(Plants vs. Zombies Soundtrack) 屋顶关卡背景音乐",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Graze the Roof\n游戏《植物大战僵尸》(Plants vs. Zombies Soundtrack) 屋顶关卡背景音乐",
|
||||||
"bpm" : 520,
|
"bpm" : 520,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 8
|
"pitchLevel": 8
|
||||||
}, {
|
}, {
|
||||||
"name": "Only My Railgun",
|
"name": "Only My Railgun",
|
||||||
"file": "Only_my_railgun.txt",
|
"file": "Only_my_railgun.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Only My Railgun \n(TVアニメ「とある科学の超電磁砲」OP1テーマ) \n你指尖跳跃的电光,是我此生不灭的信仰",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Only My Railgun \n(TVアニメ「とある科学の超電磁砲」OP1テーマ) \n你指尖跳跃的电光,是我此生不灭的信仰",
|
||||||
"bpm" : 440,
|
"bpm" : 440,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
@@ -123,31 +315,31 @@
|
|||||||
"name": "神々が恋した幻想郷(修改版)",
|
"name": "神々が恋した幻想郷(修改版)",
|
||||||
"file": "神々が恋した幻想郷(修改版).txt",
|
"file": "神々が恋した幻想郷(修改版).txt",
|
||||||
"author": "StageGuard",
|
"author": "StageGuard",
|
||||||
"desc": "源谱来自酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>\n稍作修改使节奏更接近原曲\n(过一段时间出完整版)",
|
"desc": "源谱来自酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>\n稍作修改使节奏更接近原曲\n(过一段时间出完整版)",
|
||||||
"bpm" : 512,
|
"bpm" : 512,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "猪八戒背媳妇(简易单指)",
|
"name": "猪八戒背媳妇(简易单指)",
|
||||||
"file": "猪八戒背媳妇(简易单指).txt",
|
"file": "猪八戒背媳妇(简易单指).txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 猪八戒背媳妇(简易单指)\n背 背 友 尽 曲 ",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 猪八戒背媳妇(简易单指)\n背 背 友 尽 曲 ",
|
||||||
"bpm" : 440,
|
"bpm" : 440,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "猪八戒背媳妇",
|
"name": "猪八戒背媳妇",
|
||||||
"file": "猪八戒背媳妇.txt",
|
"file": "猪八戒背媳妇.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 猪八戒背媳妇\n背 背 友 尽 曲 ",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 猪八戒背媳妇\n背 背 友 尽 曲 ",
|
||||||
"bpm" : 440,
|
"bpm" : 440,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "夜的钢琴曲(五)",
|
"name": "夜的钢琴曲(五)",
|
||||||
"file": "夜的钢琴曲(五).txt",
|
"file": "夜的钢琴曲(五).txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 夜的钢琴曲(五)\n<u>应尽量避免洞穴效应</u>",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 夜的钢琴曲(五)\n<u>应尽量避免洞穴效应</u>",
|
||||||
"bpm" : 400,
|
"bpm" : 400,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 3
|
"pitchLevel": 3
|
||||||
@@ -162,56 +354,56 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "The Right Path",
|
"name": "The Right Path",
|
||||||
"file": "The_Right_Path.txt",
|
"file": "The_Right_Path.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 The Right Path",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 The Right Path",
|
||||||
"bpm" : 500,
|
"bpm" : 500,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 10
|
"pitchLevel": 10
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Danny (Minecraft BGM)",
|
"name": "[C418]Danny (Minecraft BGM)",
|
||||||
"file": "C418_Danny.txt",
|
"file": "C418_Danny.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Danny (Minecraft BGM)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Danny (Minecraft BGM)",
|
||||||
"bpm" : 320,
|
"bpm" : 320,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Wet Hands (Minecraft BGM)",
|
"name": "[C418]Wet Hands (Minecraft BGM)",
|
||||||
"file": "C418_Wet_Hands.txt",
|
"file": "C418_Wet_Hands.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Wet Hands (Minecraft BGM)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Wet Hands (Minecraft BGM)",
|
||||||
"bpm" : 272,
|
"bpm" : 272,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 9
|
"pitchLevel": 9
|
||||||
}, {
|
}, {
|
||||||
"name": "[C418]Hal2 (Minecraft BGM)",
|
"name": "[C418]Hal2 (Minecraft BGM)",
|
||||||
"file": "C418_Hal2.txt",
|
"file": "C418_Hal2.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [C418]Hal2 (Minecraft BGM)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [C418]Hal2 (Minecraft BGM)",
|
||||||
"bpm" : 300,
|
"bpm" : 300,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "MIUI铃声(循环)",
|
"name": "MIUI铃声(循环)",
|
||||||
"file": "MIUI铃声.txt",
|
"file": "MIUI铃声.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 MIUI铃声(循环)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 MIUI铃声(循环)",
|
||||||
"bpm" : 280,
|
"bpm" : 280,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "美丽拍档(朱一旦枯燥曲)",
|
"name": "美丽拍档(朱一旦枯燥曲)",
|
||||||
"file": "美丽拍档.txt",
|
"file": "美丽拍档.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 \n美丽拍档(朱一旦枯燥曲)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 \n美丽拍档(朱一旦枯燥曲)",
|
||||||
"bpm" : 266,
|
"bpm" : 266,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
}, {
|
}, {
|
||||||
"name": "Flower Dance",
|
"name": "Flower Dance",
|
||||||
"file": "Flower_Dance.txt",
|
"file": "Flower_Dance.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 Flower Dance",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 Flower Dance",
|
||||||
"bpm" : 400,
|
"bpm" : 400,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 11
|
"pitchLevel": 11
|
||||||
@@ -250,16 +442,16 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "千本桜",
|
"name": "千本桜",
|
||||||
"file": "千本桜.txt",
|
"file": "千本桜.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 千本桜",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 千本桜",
|
||||||
"bpm" : 614,
|
"bpm" : 614,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "神々が恋した幻想郷",
|
"name": "神々が恋した幻想郷",
|
||||||
"file": "神々が恋した幻想郷.txt",
|
"file": "神々が恋した幻想郷.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "越共探头(\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 神々が恋した幻想郷",
|
"desc": "越共探头(\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 神々が恋した幻想郷",
|
||||||
"bpm" : 256,
|
"bpm" : 256,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
@@ -282,24 +474,24 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "[CL]だんご大家族",
|
"name": "[CL]だんご大家族",
|
||||||
"file": "だんご大家族.txt",
|
"file": "だんご大家族.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "<b>写作CL,译作经典,拼读人生。</b>\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 だんご大家族",
|
"desc": "<b>写作CL,译作经典,拼读人生。</b>\n酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 だんご大家族",
|
||||||
"bpm" : 200,
|
"bpm" : 200,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 6
|
"pitchLevel": 6
|
||||||
}, {
|
}, {
|
||||||
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
|
"name": "いつも何度でも (「千と千尋の神隠し」主題歌)",
|
||||||
"file": "いつも何度でも.txt",
|
"file": "いつも何度でも.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 いつも何度でも \n(「千と千尋の神隠し」主題歌)",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 いつも何度でも \n(「千と千尋の神隠し」主題歌)",
|
||||||
"bpm" : 230,
|
"bpm" : 230,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 5
|
"pitchLevel": 5
|
||||||
}, {
|
}, {
|
||||||
"name": "[钢琴曲]潮鸣り(原速)",
|
"name": "[钢琴曲]潮鸣り(原速)",
|
||||||
"file": "潮鸣り.txt",
|
"file": "潮鸣り.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 [钢琴曲]潮鸣り(原速)\n<b>只建议用钢琴演奏原速</b>\n如需切合其他乐器,请<u>通过Sky Studio修改更高的速度</u>",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 [钢琴曲]潮鸣り(原速)\n<b>只建议用钢琴演奏原速</b>\n如需切合其他乐器,请<u>通过Sky Studio修改更高的速度</u>",
|
||||||
"bpm" : 108,
|
"bpm" : 108,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
@@ -338,8 +530,8 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "简易茉莉花",
|
"name": "简易茉莉花",
|
||||||
"file": "简易茉莉花.txt",
|
"file": "简易茉莉花.txt",
|
||||||
"author": "酷安@夏川丶呇",
|
"author": "酷安@夏卡卡卡",
|
||||||
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏川丶呇<a/>分享乐谱 简易茉莉花\n建议在由洞穴效应的地方弹;最后的部分因音高问题进行了小修改",
|
"desc": "酷安酷友<a href=http://www.coolapk.com/u/2313452>@夏卡卡卡<a/>分享乐谱 简易茉莉花\n建议在由洞穴效应的地方弹;最后的部分因音高问题进行了小修改",
|
||||||
"bpm" : 200,
|
"bpm" : 200,
|
||||||
"suggested_instrument": 1,
|
"suggested_instrument": 1,
|
||||||
"pitchLevel": 0
|
"pitchLevel": 0
|
||||||
|
|||||||
BIN
shared_sheets/Canon卡农_C大调_简易版.txt
Normal file
BIN
shared_sheets/Canon卡农_C大调_简易版.txt
Normal file
Binary file not shown.
BIN
shared_sheets/IPhone马林巴琴.txt
Normal file
BIN
shared_sheets/IPhone马林巴琴.txt
Normal file
Binary file not shown.
BIN
shared_sheets/Souvevirs_d'Enfance.txt
Normal file
BIN
shared_sheets/Souvevirs_d'Enfance.txt
Normal file
Binary file not shown.
BIN
shared_sheets/もペもぺ(mopemope).txt
Normal file
BIN
shared_sheets/もペもぺ(mopemope).txt
Normal file
Binary file not shown.
BIN
shared_sheets/不染_enhanced.txt
Normal file
BIN
shared_sheets/不染_enhanced.txt
Normal file
Binary file not shown.
BIN
shared_sheets/偏爱_UTF16.txt
Normal file
BIN
shared_sheets/偏爱_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/四月是你的谎言_UTF16.txt
Normal file
BIN
shared_sheets/四月是你的谎言_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/夏天的风GF_UTF16.txt
Normal file
BIN
shared_sheets/夏天的风GF_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/夏天的风_UTF16.txt
Normal file
BIN
shared_sheets/夏天的风_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/大悲咒_UTF16.txt
Normal file
BIN
shared_sheets/大悲咒_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/好运来HX_UTF16.txt
Normal file
BIN
shared_sheets/好运来HX_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/小星星_UTF16.txt
Normal file
BIN
shared_sheets/小星星_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/幻昼CH_UTF16.txt
Normal file
BIN
shared_sheets/幻昼CH_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/心作_UTF16.txt
Normal file
BIN
shared_sheets/心作_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/打上花火_UTF16.txt
Normal file
BIN
shared_sheets/打上花火_UTF16.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/猪猪侠_UTF16.txt
Normal file
BIN
shared_sheets/猪猪侠_UTF16.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/虫儿飞儿歌_UTF16.txt
Normal file
BIN
shared_sheets/虫儿飞儿歌_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/误红装A1_UTF16.txt
Normal file
BIN
shared_sheets/误红装A1_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/辞乆门回忆_UTF16.txt
Normal file
BIN
shared_sheets/辞乆门回忆_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/阿珍爱上了阿强_UTF16.txt
Normal file
BIN
shared_sheets/阿珍爱上了阿强_UTF16.txt
Normal file
Binary file not shown.
BIN
shared_sheets/雨林_UTF16.txt
Normal file
BIN
shared_sheets/雨林_UTF16.txt
Normal file
Binary file not shown.
@@ -80,6 +80,14 @@ sheetmgr = {
|
|||||||
return this.cachedOnlineSharedSheetInfoList;
|
return this.cachedOnlineSharedSheetInfoList;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
filterOnlineSharedSheet: function(filterBlock) {
|
||||||
|
var resultList = [];
|
||||||
|
this.getOnlineSharedSheetInfoList().map(function(element, index) {
|
||||||
|
if(filterBlock(element)) resultList.push(element);
|
||||||
|
});
|
||||||
|
return resultList;
|
||||||
|
},
|
||||||
|
|
||||||
downloadAndLoad: function(file, author, listener) {
|
downloadAndLoad: function(file, author, listener) {
|
||||||
listener({status:1});
|
listener({status:1});
|
||||||
config.fetchRepoFile("shared_sheets/" + file, null, function(body) {
|
config.fetchRepoFile("shared_sheets/" + file, null, function(body) {
|
||||||
@@ -111,14 +119,29 @@ sheetmgr = {
|
|||||||
__internal_fetchLocalSheets: function(listener) {
|
__internal_fetchLocalSheets: function(listener) {
|
||||||
var sheets = files.listDir(this.rootDir, function(name){return name.endsWith(".txt");});
|
var sheets = files.listDir(this.rootDir, function(name){return name.endsWith(".txt");});
|
||||||
this.cachedLocalSheetList.length = 0;
|
this.cachedLocalSheetList.length = 0;
|
||||||
|
var failed = 0;
|
||||||
for(var i in sheets) {
|
for(var i in sheets) {
|
||||||
|
try {
|
||||||
var readable = files.open(files.join(this.rootDir, sheets[i]), "r", this.encoding);
|
var readable = files.open(files.join(this.rootDir, sheets[i]), "r", this.encoding);
|
||||||
var parsed = eval(readable.read())[0];
|
var parsed = eval(readable.read())[0];
|
||||||
readable.close();
|
readable.close();
|
||||||
//parsed.songNotes = this.parseSongNote(parsed.songNotes);
|
//parsed.songNotes = this.parseSongNote(parsed.songNotes);
|
||||||
|
|
||||||
|
if(typeof(parsed.songNotes[0]) == "number" || parsed.isEncrypted) {
|
||||||
|
//failed type = 1 为加载了加密的JSON谱子
|
||||||
|
parsed = {failed: true, errtype: 1, fileName: sheets[i], reason: "It is a encrypted JSON sheet."};
|
||||||
|
failed ++;
|
||||||
|
} else {
|
||||||
parsed.fileName = sheets[i];
|
parsed.fileName = sheets[i];
|
||||||
|
}
|
||||||
this.cachedLocalSheetList.push(parsed);
|
this.cachedLocalSheetList.push(parsed);
|
||||||
if(listener != null) listener(i);
|
} catch (e) {
|
||||||
|
failed ++;
|
||||||
|
//failed type = 2 为JSON格式有误
|
||||||
|
//failed type = -1 为未知错误
|
||||||
|
this.cachedLocalSheetList.push({failed: true, errtype: /illegal character/.test(String(e)) ? -1 : (/SyntaxError/.test(String(e)) ? 2 : -1), fileName: sheets[i], reason: e});
|
||||||
|
}
|
||||||
|
if(listener != null) listener(Number(i) + 1, failed);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
__internal_fetchOnlineSharedSheets: function() {
|
__internal_fetchOnlineSharedSheets: function() {
|
||||||
@@ -229,17 +252,11 @@ sheetplayer = {
|
|||||||
play: function(listener) {
|
play: function(listener) {
|
||||||
if(this.playing == true) return;
|
if(this.playing == true) return;
|
||||||
this.playing = true;
|
this.playing = true;
|
||||||
this.thread = threads.start(function() {
|
|
||||||
while(
|
|
||||||
sheetplayer.playing && sheetplayer.currentNote < sheetplayer.noteCount
|
|
||||||
) {
|
|
||||||
|
|
||||||
if((sheetplayer.currentNote + 1) == sheetplayer.noteCount) {
|
this.thread = threads.start(function() {
|
||||||
sheetplayer.nextInterval = sheetplayer.notes[sheetplayer.currentNote].time - sheetplayer.notes[sheetplayer.currentNote - 1].time;
|
var executor = java.util.concurrent.Executors.newCachedThreadPool();
|
||||||
} else {
|
var tragetRunnable = new java.lang.Runnable({
|
||||||
sheetplayer.nextInterval = sheetplayer.notes[sheetplayer.currentNote + 1].time - sheetplayer.notes[sheetplayer.currentNote].time;
|
run: function() {
|
||||||
}
|
|
||||||
threads.start(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([
|
gestureMap.push([
|
||||||
@@ -250,7 +267,15 @@ sheetplayer = {
|
|||||||
});
|
});
|
||||||
gestureMap = sheetplayer.toSource(gestureMap);
|
gestureMap = sheetplayer.toSource(gestureMap);
|
||||||
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
|
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
while(sheetplayer.playing && sheetplayer.currentNote < sheetplayer.noteCount) {
|
||||||
|
if((sheetplayer.currentNote + 1) == sheetplayer.noteCount) {
|
||||||
|
sheetplayer.nextInterval = sheetplayer.notes[sheetplayer.currentNote].time - sheetplayer.notes[sheetplayer.currentNote - 1].time;
|
||||||
|
} else {
|
||||||
|
sheetplayer.nextInterval = sheetplayer.notes[sheetplayer.currentNote + 1].time - sheetplayer.notes[sheetplayer.currentNote].time;
|
||||||
|
}
|
||||||
|
executor.execute(tragetRunnable);
|
||||||
if(listener != null) listener();
|
if(listener != null) listener();
|
||||||
java.lang.Thread.sleep(sheetplayer.nextInterval = Math.round(sheetplayer.nextInterval * sheetplayer.speed));
|
java.lang.Thread.sleep(sheetplayer.nextInterval = Math.round(sheetplayer.nextInterval * sheetplayer.speed));
|
||||||
sheetplayer.currentNote ++;
|
sheetplayer.currentNote ++;
|
||||||
@@ -324,7 +349,9 @@ config = {
|
|||||||
skipOnlineUploadTip: false,
|
skipOnlineUploadTip: false,
|
||||||
skipOnlineSharedSheetCTip: false,
|
skipOnlineSharedSheetCTip: false,
|
||||||
skipImportLocalSheetTip: false,
|
skipImportLocalSheetTip: false,
|
||||||
currentVersion: 11,
|
showFailedSheets: true,
|
||||||
|
tipOnAndroidR: true,
|
||||||
|
currentVersion: 14,
|
||||||
gitVersion: "",
|
gitVersion: "",
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -332,6 +359,7 @@ config = {
|
|||||||
|
|
||||||
init: function() {
|
init: function() {
|
||||||
this._global_storage = storages.create("StageGuard:SkyAutoPlayer:Config");
|
this._global_storage = storages.create("StageGuard:SkyAutoPlayer:Config");
|
||||||
|
|
||||||
this.values.key_coordinates = this._global_storage.get("key_coordinates", this.values.key_coordinates);
|
this.values.key_coordinates = this._global_storage.get("key_coordinates", this.values.key_coordinates);
|
||||||
this.values.skipRunScriptTip = this._global_storage.get("skip_run_script_tip", this.values.skipRunScriptTip);
|
this.values.skipRunScriptTip = this._global_storage.get("skip_run_script_tip", this.values.skipRunScriptTip);
|
||||||
this.values.skipOpenWindowTip = this._global_storage.get("skip_open_window_tip", this.values.skipOpenWindowTip);
|
this.values.skipOpenWindowTip = this._global_storage.get("skip_open_window_tip", this.values.skipOpenWindowTip);
|
||||||
@@ -339,8 +367,17 @@ config = {
|
|||||||
this.values.skipOnlineUploadTip = this._global_storage.get("skip_online_upload_tip", this.values.skipOnlineUploadTip);
|
this.values.skipOnlineUploadTip = this._global_storage.get("skip_online_upload_tip", this.values.skipOnlineUploadTip);
|
||||||
this.values.skipOnlineSharedSheetCTip = this._global_storage.get("skip_shared_sheet_c_tip", this.values.skipOnlineSharedSheetCTip);
|
this.values.skipOnlineSharedSheetCTip = this._global_storage.get("skip_shared_sheet_c_tip", this.values.skipOnlineSharedSheetCTip);
|
||||||
this.values.skipImportLocalSheetTip = this._global_storage.get("skip_import_local_sheet_tip", this.values.skipImportLocalSheetTip);
|
this.values.skipImportLocalSheetTip = this._global_storage.get("skip_import_local_sheet_tip", this.values.skipImportLocalSheetTip);
|
||||||
|
this.values.showFailedSheets = this._global_storage.get("show_failed_sheets", this.values.showFailedSheets);
|
||||||
|
this.values.tipOnAndroidR = this._global_storage.get("tip_storage_on_android_r", this.values.tipOnAndroidR);
|
||||||
|
|
||||||
|
try {
|
||||||
|
android.os.Build.VERSION_CODES.R
|
||||||
|
sheetmgr.rootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/sheets/";
|
||||||
|
if(this.values.tipOnAndroidR) toast("安卓11不允许外部应用读取应用私有文件夹,乐谱文件夹移至" + sheetmgr.rootDir);
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
files.ensureDir(sheetmgr.rootDir);
|
files.ensureDir(sheetmgr.rootDir);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
save: function(key, value) {
|
save: function(key, value) {
|
||||||
@@ -370,8 +407,8 @@ config = {
|
|||||||
|
|
||||||
fetchResources: function(listener) {
|
fetchResources: function(listener) {
|
||||||
var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/";
|
var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/";
|
||||||
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png"];
|
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png", "search.png"/*, "filter.png"*/];
|
||||||
var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/";
|
var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/bitmaps/";
|
||||||
var downloadQueue = [];
|
var downloadQueue = [];
|
||||||
var tryCount = 1;
|
var tryCount = 1;
|
||||||
try {
|
try {
|
||||||
@@ -1002,12 +1039,14 @@ gui = {
|
|||||||
_global_title: null,
|
_global_title: null,
|
||||||
_global_navigation_bar: null,
|
_global_navigation_bar: null,
|
||||||
_global_close: null,
|
_global_close: null,
|
||||||
_glonal_func: null,
|
_global_statusbar: null,
|
||||||
|
_glonal_func: [],
|
||||||
|
|
||||||
isShowing: false,
|
isShowing: false,
|
||||||
current_navigation_selection: NaN,
|
current_navigation_selection: NaN,
|
||||||
func_showing: false,
|
func_showing: false,
|
||||||
current: 0,
|
current: 0,
|
||||||
|
currentPageChangeListener: null,
|
||||||
|
|
||||||
cx: dp * 10,
|
cx: dp * 10,
|
||||||
cy: dp * 10,
|
cy: dp * 10,
|
||||||
@@ -1073,8 +1112,10 @@ gui = {
|
|||||||
if(gui.main.views[i].index == index) {
|
if(gui.main.views[i].index == index) {
|
||||||
gui.main.views[i].func_clickable = clickable;
|
gui.main.views[i].func_clickable = clickable;
|
||||||
if(gui.main.current == index && gui.main.isShowing) {
|
if(gui.main.current == index && gui.main.isShowing) {
|
||||||
gui.main._glonal_func.setEnabled(clickable);
|
for(var i in gui.main._glonal_func) {
|
||||||
gui.main._glonal_func.setClickable(clickable);
|
gui.main._glonal_func[i].setEnabled(clickable);
|
||||||
|
gui.main._glonal_func[i].setClickable(clickable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,10 +1132,10 @@ gui = {
|
|||||||
gui.main._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * gui.main.window_width, dp * gui.main.window_height));
|
gui.main._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * gui.main.window_width, dp * gui.main.window_height));
|
||||||
gui.main._global_base.setBackgroundColor(gui.config.colors.background);
|
gui.main._global_base.setBackgroundColor(gui.config.colors.background);
|
||||||
|
|
||||||
s.statusBar = new android.widget.RelativeLayout(ctx);
|
gui.main._global_statusbar = new android.widget.RelativeLayout(ctx);
|
||||||
s.statusBar.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, dp * gui.main.status_bar_height));
|
gui.main._global_statusbar.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, dp * gui.main.status_bar_height));
|
||||||
s.statusBar.setBackgroundColor(gui.config.colors.background);
|
gui.main._global_statusbar.setBackgroundColor(gui.config.colors.background);
|
||||||
s.statusBar.setElevation(10 * dp);
|
gui.main._global_statusbar.setElevation(10 * dp);
|
||||||
|
|
||||||
gui.main._global_title = new android.widget.TextView(ctx);
|
gui.main._global_title = new android.widget.TextView(ctx);
|
||||||
gui.main._global_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
gui.main._global_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
@@ -1124,7 +1165,7 @@ gui = {
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
s.statusBar.addView(gui.main._global_title);
|
gui.main._global_statusbar.addView(gui.main._global_title);
|
||||||
|
|
||||||
gui.main._global_close = new android.widget.TextView(ctx);
|
gui.main._global_close = new android.widget.TextView(ctx);
|
||||||
gui.main._global_close.setId(23);
|
gui.main._global_close.setId(23);
|
||||||
@@ -1142,17 +1183,10 @@ gui = {
|
|||||||
gui.suspension.show();
|
gui.suspension.show();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
gui.main._glonal_func = new android.widget.ImageView(ctx);
|
|
||||||
gui.main._glonal_func.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * gui.main.status_bar_height, dp * gui.main.status_bar_height));
|
|
||||||
gui.main._glonal_func.setPadding(dp * 1, dp * 1, dp * 1, dp * 1);
|
|
||||||
gui.main._glonal_func.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 23);
|
|
||||||
gui.main._glonal_func.measure(0, 0);
|
|
||||||
gui.main._glonal_func.setBackgroundDrawable(gui.utils.ripple_drawable(gui.main._glonal_func.getMeasuredWidth(), gui.main._glonal_func.getMeasuredHeight(), "rect"));
|
|
||||||
gui.main._glonal_func.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
|
|
||||||
s.statusBar.addView(gui.main._glonal_func);
|
|
||||||
s.statusBar.addView(gui.main._global_close);
|
|
||||||
|
|
||||||
gui.main._global_base.addView(s.statusBar);
|
gui.main._global_statusbar.addView(gui.main._global_close);
|
||||||
|
|
||||||
|
gui.main._global_base.addView(gui.main._global_statusbar);
|
||||||
|
|
||||||
gui.main._global_content_container = new android.widget.RelativeLayout(ctx);
|
gui.main._global_content_container = new android.widget.RelativeLayout(ctx);
|
||||||
gui.main._global_content_container.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, dp * (gui.main.window_height - gui.main.status_bar_height - gui.main.navigation_bar_height)));
|
gui.main._global_content_container.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, dp * (gui.main.window_height - gui.main.status_bar_height - gui.main.navigation_bar_height)));
|
||||||
@@ -1182,25 +1216,14 @@ gui = {
|
|||||||
gui.main._global_navigation_bar.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, dp * (gui.main.navigation_bar_height + gui.main.navigation_bar_updown_margin * 2)));
|
gui.main._global_navigation_bar.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, dp * (gui.main.navigation_bar_height + gui.main.navigation_bar_updown_margin * 2)));
|
||||||
gui.main._global_navigation_bar.setBackgroundColor(gui.config.colors.background);
|
gui.main._global_navigation_bar.setBackgroundColor(gui.config.colors.background);
|
||||||
|
|
||||||
gui.main.__internal_genNavigationList(s);
|
gui.main.__internal_genNavigationList(s, content);
|
||||||
|
|
||||||
gui.main._global_base.addView(gui.main._global_navigation_bar);
|
gui.main._global_base.addView(gui.main._global_navigation_bar);
|
||||||
|
|
||||||
//ui.setContentView(gui.main._global_base);
|
|
||||||
/*gui.main._global_main_popup = new android.widget.PopupWindow(ctx);
|
|
||||||
gui.main._global_main_popup.setWindowLayoutType(android.os.Build.VERSION.SDK_INT >= 26 ? android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : android.view.WindowManager.LayoutParams.TYPE_PHONE);
|
|
||||||
gui.main._global_main_popup.setFocusable(false);
|
|
||||||
gui.main._global_main_popup.setOutsideTouchable(false);
|
|
||||||
gui.main._global_main_popup.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(0));
|
|
||||||
gui.main._global_main_popup.setContentView(gui.main._global_base);
|
|
||||||
gui.main._global_main_popup.setWidth(gui.main.window_width * dp);
|
|
||||||
gui.main._global_main_popup.setHeight((gui.main.window_height + gui.main.navigation_bar_updown_margin * 2) * dp);
|
|
||||||
gui.main._global_main_popup.showAtLocation(ctx.getWindow().getDecorView(), 0, s.x = gui.main.cx, s.y = gui.main.cy);*/
|
|
||||||
|
|
||||||
s._winParams = new android.view.WindowManager.LayoutParams();
|
s._winParams = new android.view.WindowManager.LayoutParams();
|
||||||
s._winParams.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
s._winParams.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
||||||
s._winParams.flags = android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
|
||||||
s._winParams.format = android.graphics.PixelFormat.TRANSLUCENT;
|
s._winParams.format = android.graphics.PixelFormat.TRANSLUCENT;
|
||||||
|
s._winParams.softInputMode = android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
|
||||||
s._winParams.width = gui.main.window_width * dp;
|
s._winParams.width = gui.main.window_width * dp;
|
||||||
s._winParams.height = (gui.main.window_height + gui.main.navigation_bar_updown_margin * 2) * dp;
|
s._winParams.height = (gui.main.window_height + gui.main.navigation_bar_updown_margin * 2) * dp;
|
||||||
s._winParams.x = s.x = gui.main.cx;
|
s._winParams.x = s.x = gui.main.cx;
|
||||||
@@ -1245,16 +1268,18 @@ gui = {
|
|||||||
gui.main._global_content_container.findViewById(cid).findViewById(15).setAlpha(1.0 - anim.getAnimatedValue());
|
gui.main._global_content_container.findViewById(cid).findViewById(15).setAlpha(1.0 - anim.getAnimatedValue());
|
||||||
gui.main._global_content_container.findViewById(tid).findViewById(15).setAlpha(anim.getAnimatedValue());
|
gui.main._global_content_container.findViewById(tid).findViewById(15).setAlpha(anim.getAnimatedValue());
|
||||||
if(anim.getAnimatedValue() == 1.0) {
|
if(anim.getAnimatedValue() == 1.0) {
|
||||||
gui.main._global_content_container.findViewById(cid).findViewById(15).setEnabled(false);
|
var previousContainer = gui.main._global_content_container.findViewById(cid);
|
||||||
gui.main._global_content_container.findViewById(cid).findViewById(15).setClickable(false);
|
previousContainer.findViewById(15).setEnabled(false);
|
||||||
gui.main._global_content_container.findViewById(cid).setEnabled(false);
|
previousContainer.findViewById(15).setClickable(false);
|
||||||
gui.main._global_content_container.findViewById(cid).setClickable(false); //飞了
|
previousContainer.setEnabled(false);
|
||||||
gui.main._global_content_container.findViewById(cid).setZ(0);
|
previousContainer.setClickable(false);
|
||||||
gui.main._global_content_container.findViewById(tid).findViewById(15).setEnabled(true);
|
previousContainer.setZ(0);
|
||||||
gui.main._global_content_container.findViewById(tid).findViewById(15).setClickable(true);
|
var targetContainer = gui.main._global_content_container.findViewById(tid);
|
||||||
gui.main._global_content_container.findViewById(tid).setEnabled(true);
|
targetContainer.findViewById(15).setEnabled(true);
|
||||||
gui.main._global_content_container.findViewById(tid).setClickable(true);
|
targetContainer.findViewById(15).setClickable(true);
|
||||||
gui.main._global_content_container.findViewById(tid).setZ(1); //回来
|
targetContainer.setEnabled(true);
|
||||||
|
targetContainer.setClickable(true);
|
||||||
|
targetContainer.setZ(1);
|
||||||
if(gui.main.views[tid].update != null && anim.getAnimatedValue() == 1.0) gui.main.views[tid].update(s);
|
if(gui.main.views[tid].update != null && anim.getAnimatedValue() == 1.0) gui.main.views[tid].update(s);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1262,53 +1287,53 @@ gui = {
|
|||||||
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
gui.main.currentPageChangeListener = content.onPageChanged;
|
||||||
|
gui.main.__internal_changeNavigationStatus(s, content);
|
||||||
|
}
|
||||||
|
|
||||||
gui.main.__internal_changeNavigationStatus(s.index);
|
if(gui.main.views[s.index].func == null || !gui.main.views[s.index].func.length) {
|
||||||
}
|
|
||||||
if(gui.main.views[s.index].func == null) {
|
|
||||||
if(gui.main.func_showing) {
|
if(gui.main.func_showing) {
|
||||||
|
//no extra func and previous page has func
|
||||||
gui.main.func_showing = false;
|
gui.main.func_showing = false;
|
||||||
gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
|
||||||
gui.main._glonal_func.setTranslationX(anim.getAnimatedValue() * gui.main._glonal_func.getMeasuredWidth());
|
|
||||||
gui.main._glonal_func.setAlpha(1 - anim.getAnimatedValue());
|
|
||||||
if(anim.getAnimatedValue() == 1.0) {
|
|
||||||
gui.main._glonal_func.setClickable(false);
|
|
||||||
gui.main._glonal_func.setEnabled(false);
|
|
||||||
gui.main._glonal_func.setOnClickListener(new android.view.View.OnClickListener({
|
|
||||||
onClick: function() {}
|
|
||||||
}));
|
|
||||||
gui.main._glonal_func.setImageBitmap(android.graphics.Bitmap.createBitmap(1, 1, android.graphics.Bitmap.Config.ARGB_8888));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(gui.main.func_showing) {
|
|
||||||
gui.main._glonal_func.setOnClickListener(new android.view.View.OnClickListener({
|
|
||||||
onClick: function() {gui.main.views[s.index].func(s)}
|
|
||||||
}));
|
|
||||||
gui.main._glonal_func.setImageBitmap(gui.main.views[s.index].func_icon);
|
|
||||||
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
gui.main._glonal_func.setAlpha(anim.getAnimatedValue());
|
for(var i in gui.main._glonal_func) {
|
||||||
});
|
gui.main._glonal_func[i].setAlpha(1 - anim.getAnimatedValue());
|
||||||
} else {
|
if(anim.getAnimatedValue() == 1.0) {
|
||||||
gui.main.func_showing = true;
|
gui.main._global_statusbar.removeView(gui.main._glonal_func[i]);
|
||||||
gui.main._glonal_func.setClickable(true);
|
}
|
||||||
gui.main._glonal_func.setEnabled(true);
|
}
|
||||||
gui.main._glonal_func.setOnClickListener(new android.view.View.OnClickListener({
|
|
||||||
onClick: function() {gui.main.views[s.index].func(s)}
|
|
||||||
}));
|
|
||||||
gui.main._glonal_func.setImageBitmap(gui.main.views[s.index].func_icon);
|
|
||||||
gui.utils.value_animation("Float", 1, 0, 300 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
|
||||||
gui.main._glonal_func.setTranslationX(anim.getAnimatedValue() * gui.main._glonal_func.getMeasuredWidth());
|
|
||||||
gui.main._glonal_func.setAlpha(1 - anim.getAnimatedValue());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for(var i in gui.main._glonal_func) gui.main._global_statusbar.removeView(gui.main._glonal_func[i]);
|
||||||
|
gui.main.func_showing = true;
|
||||||
|
s.baseFuncIndex = gui.main._global_close.getId();
|
||||||
|
for(var i in content.func) {
|
||||||
|
var view = new android.widget.ImageView(ctx);
|
||||||
|
view.setId(++s.baseFuncIndex);
|
||||||
|
view.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * gui.main.status_bar_height, dp * gui.main.status_bar_height));
|
||||||
|
view.setPadding(dp * 1, dp * 1, dp * 1, dp * 1);
|
||||||
|
view.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, s.baseFuncIndex - 1);
|
||||||
|
view.measure(0, 0);
|
||||||
|
view.setBackgroundDrawable(gui.utils.ripple_drawable(view.getMeasuredWidth(), view.getMeasuredHeight(), "rect"));
|
||||||
|
view.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
|
||||||
|
view.setAlpha(0);
|
||||||
|
view.setImageBitmap(content.func[i].icon);
|
||||||
|
view.setOnClickListener(new android.view.View.OnClickListener({
|
||||||
|
onClick: function(view) {content.func[view.getId() - (gui.main._global_close.getId() + 1)].onClick(s, content)}
|
||||||
|
}));
|
||||||
|
gui.main._global_statusbar.addView(view);
|
||||||
|
gui.main._glonal_func.push(view);
|
||||||
|
}
|
||||||
|
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
for(var i in gui.main._glonal_func) {
|
||||||
|
gui.main._glonal_func[i].setAlpha(anim.getAnimatedValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
gui.main.current_navigation_selection = s.index;
|
gui.main.current_navigation_selection = s.index;
|
||||||
gui.main._glonal_func.setClickable(content.func_clickable);
|
|
||||||
gui.main._glonal_func.setEnabled(content.func_clickable);
|
|
||||||
})},
|
})},
|
||||||
__internal_genNavigationList: function(s) { gui.run(function(){
|
__internal_genNavigationList: function(s, content) { gui.run(function(){
|
||||||
if(gui.main._global_navigation_bar == null) return;
|
if(gui.main._global_navigation_bar == null) return;
|
||||||
s.__2x_navigation_padding = (gui.main.window_width - gui.main.views.length * gui.main.navigation_bar_height) / (gui.main.views.length);
|
s.__2x_navigation_padding = (gui.main.window_width - gui.main.views.length * gui.main.navigation_bar_height) / (gui.main.views.length);
|
||||||
for(var i in gui.main.views) {
|
for(var i in gui.main.views) {
|
||||||
@@ -1324,10 +1349,11 @@ gui = {
|
|||||||
default: s["navigationBtn" + i].getLayoutParams().setMargins(s.__2x_navigation_padding / 2, dp * gui.main.navigation_bar_updown_margin, s.__2x_navigation_padding / 2, dp * gui.main.navigation_bar_updown_margin); break;
|
default: s["navigationBtn" + i].getLayoutParams().setMargins(s.__2x_navigation_padding / 2, dp * gui.main.navigation_bar_updown_margin, s.__2x_navigation_padding / 2, dp * gui.main.navigation_bar_updown_margin); break;
|
||||||
}
|
}
|
||||||
s["navigationBtn" + i].setOnClickListener(new android.view.View.OnClickListener({
|
s["navigationBtn" + i].setOnClickListener(new android.view.View.OnClickListener({
|
||||||
onClick: function(view) {
|
onClick: function(view) { if(gui.main.current_navigation_selection != Number(view.getId())) {
|
||||||
|
if(typeof(gui.main.currentPageChangeListener) == "function") gui.main.currentPageChangeListener(s, content);
|
||||||
gui.main.__internal_show(gui.main.views[Number(view.getId())]);
|
gui.main.__internal_show(gui.main.views[Number(view.getId())]);
|
||||||
gui.main.current_navigation_selection = Number(view.getId());
|
gui.main.current_navigation_selection = Number(view.getId());
|
||||||
}
|
}}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
s["navigationBtnText" + i] = new android.widget.TextView(ctx);
|
s["navigationBtnText" + i] = new android.widget.TextView(ctx);
|
||||||
@@ -1354,11 +1380,11 @@ gui = {
|
|||||||
gui.main._global_navigation_bar.addView(s["navigationBtn" + i]);
|
gui.main._global_navigation_bar.addView(s["navigationBtn" + i]);
|
||||||
}
|
}
|
||||||
})},
|
})},
|
||||||
__internal_changeNavigationStatus: function(index) { gui.run(function(){
|
__internal_changeNavigationStatus: function(s, content) { gui.run(function(){
|
||||||
if(gui.main._global_navigation_bar == null) return;
|
if(gui.main._global_navigation_bar == null) return;
|
||||||
if(!/^android/.test(String(gui.main._global_navigation_bar.findViewById(index)))) return;
|
if(!/^android/.test(String(gui.main._global_navigation_bar.findViewById(s.index)))) return;
|
||||||
if(gui.main.current_navigation_selection == index) return;
|
if(gui.main.current_navigation_selection == s.index) return;
|
||||||
var colorAnim = android.animation.ObjectAnimator.ofInt(gui.main._global_navigation_bar.findViewById(index).findViewById(12), "textColor", gui.config.colors.sec_text, gui.config.colors.text);
|
var colorAnim = android.animation.ObjectAnimator.ofInt(gui.main._global_navigation_bar.findViewById(s.index).findViewById(12), "textColor", gui.config.colors.sec_text, gui.config.colors.text);
|
||||||
colorAnim.setDuration(300);
|
colorAnim.setDuration(300);
|
||||||
colorAnim.setEvaluator(new android.animation.ArgbEvaluator());
|
colorAnim.setEvaluator(new android.animation.ArgbEvaluator());
|
||||||
colorAnim.start();
|
colorAnim.start();
|
||||||
@@ -1366,7 +1392,18 @@ gui = {
|
|||||||
colorAnim.setDuration(300);
|
colorAnim.setDuration(300);
|
||||||
colorAnim.setEvaluator(new android.animation.ArgbEvaluator());
|
colorAnim.setEvaluator(new android.animation.ArgbEvaluator());
|
||||||
colorAnim.start();
|
colorAnim.start();
|
||||||
gui.main.current_navigation_selection = index;
|
|
||||||
|
for(var i in gui.main.views) {
|
||||||
|
s["navigationBtn" + i].setOnClickListener(new android.view.View.OnClickListener({
|
||||||
|
onClick: function(view) { if(gui.main.current_navigation_selection != Number(view.getId())) {
|
||||||
|
if(typeof(gui.main.currentPageChangeListener) == "function") gui.main.currentPageChangeListener(s, content);
|
||||||
|
gui.main.__internal_show(gui.main.views[Number(view.getId())]);
|
||||||
|
gui.main.current_navigation_selection = Number(view.getId());
|
||||||
|
}}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
gui.main.current_navigation_selection = s.index;
|
||||||
|
|
||||||
})},
|
})},
|
||||||
__internal_rmNavigationList: function() { gui.run(function(){
|
__internal_rmNavigationList: function() { gui.run(function(){
|
||||||
@@ -1891,7 +1928,7 @@ gui = {
|
|||||||
}
|
}
|
||||||
});},
|
});},
|
||||||
refreshStatus: function() { gui.run(function(){
|
refreshStatus: function() { gui.run(function(){
|
||||||
gui.player_panel._global_status.setText(String(sheetplayer.playing ? (sheetplayer.speed_list[sheetplayer.current_speed_index] + "x: " + Number(sheetplayer.currentNote + 1) + "/" + sheetplayer.noteCount + " -> " + sheetplayer.nextInterval + "ms") : (sheetplayer.thread == null ? "Idle" : "Paused")));
|
gui.player_panel._global_status.setText(String(sheetplayer.speed_list[sheetplayer.current_speed_index] + "x: " + (sheetplayer.playing ? (Number(sheetplayer.currentNote + 1) + "/" + sheetplayer.noteCount + " -> " + sheetplayer.nextInterval + "ms") : (sheetplayer.thread == null ? "Idle" : "Paused"))));
|
||||||
gui.player_panel._global_cnote.setText(String(sheetplayer.playing ? (sheetplayer.notes[sheetplayer.currentNote < sheetplayer.noteCount ? sheetplayer.currentNote : sheetplayer.noteCount - 1].keys) : "-"));
|
gui.player_panel._global_cnote.setText(String(sheetplayer.playing ? (sheetplayer.notes[sheetplayer.currentNote < sheetplayer.noteCount ? sheetplayer.currentNote : sheetplayer.noteCount - 1].keys) : "-"));
|
||||||
gui.player_panel._global_seek.setProgress(sheetplayer.currentNote);
|
gui.player_panel._global_seek.setProgress(sheetplayer.currentNote);
|
||||||
gui.utils.value_animation("Float", 0, 1, 80 , new android.view.animation.LinearInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 0, 1, 80 , new android.view.animation.LinearInterpolator(), function(anim) {
|
||||||
@@ -1974,10 +2011,12 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
title: "本地乐谱",
|
title: "本地乐谱",
|
||||||
navigation_title: "本地乐谱",
|
navigation_title: "本地乐谱",
|
||||||
navigation_icon: config.bitmaps.local,
|
navigation_icon: config.bitmaps.local,
|
||||||
func: function(s) {
|
func: [{
|
||||||
this.getSheetList(s, true);
|
icon: android.graphics.Bitmap.createBitmap(config.bitmaps.refresh),
|
||||||
|
onClick: function(s, selfContent) {
|
||||||
|
selfContent.getSheetList(s, true);
|
||||||
},
|
},
|
||||||
func_icon: android.graphics.Bitmap.createBitmap(config.bitmaps.refresh),
|
}],
|
||||||
view: function(s) {
|
view: function(s) {
|
||||||
s.ns0_rl = new android.widget.RelativeLayout(ctx);
|
s.ns0_rl = new android.widget.RelativeLayout(ctx);
|
||||||
s.ns0_rl.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height));
|
s.ns0_rl.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height));
|
||||||
@@ -2016,13 +2055,15 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.v_title.setId(10);
|
element.v_title.setId(10);
|
||||||
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
||||||
element.v_title.getLayoutParams().setMargins(dp * 15, dp * 15, dp * 15, dp * 1);
|
element.v_title.getLayoutParams().setMargins(dp * 15, dp * 15, dp * 15, element.failed ? dp * 15 : dp * 1);
|
||||||
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
|
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
|
||||||
|
if(element.failed) element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
|
||||||
element.v_title.setTextSize(16);
|
element.v_title.setTextSize(16);
|
||||||
element.v_title.setTextColor(gui.config.colors.text);
|
element.v_title.setTextColor(element.failed ? gui.config.colors.sec_text : gui.config.colors.text);
|
||||||
element.v_title.setText(element.name);
|
element.v_title.setText(element.failed ? android.text.Html.fromHtml("<s>" + element.fileName + "</s>") : element.name);
|
||||||
element.v_relative.addView(element.v_title);
|
element.v_relative.addView(element.v_title);
|
||||||
|
|
||||||
|
if(!element.failed) {
|
||||||
element.v_author = new android.widget.TextView(ctx);
|
element.v_author = new android.widget.TextView(ctx);
|
||||||
element.v_author.setId(11);
|
element.v_author.setId(11);
|
||||||
element.v_author.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
element.v_author.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
||||||
@@ -2053,15 +2094,24 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
} else {
|
} else {
|
||||||
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标");
|
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标");
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
element.v_relative.addView(element.v_play);
|
||||||
|
}
|
||||||
element.v_delete = new android.widget.ImageView(ctx);
|
element.v_delete = new android.widget.ImageView(ctx);
|
||||||
element.v_delete.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
|
element.v_delete.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
|
||||||
element.v_delete.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39));
|
element.v_delete.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 39, dp * 39));
|
||||||
element.v_delete.getLayoutParams().setMargins(dp * 15, dp * 15, 0, dp * 15);
|
element.v_delete.getLayoutParams().setMargins(dp * 15, dp * 15, element.failed ? dp * 15 : 0, dp * 15);
|
||||||
element.v_delete.setPadding(dp * 7, dp * 7, dp * 7, dp * 7);
|
element.v_delete.setPadding(dp * 7, dp * 7, dp * 7, dp * 7);
|
||||||
|
if(element.failed) {
|
||||||
|
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
|
||||||
|
} else {
|
||||||
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 12);
|
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 12);
|
||||||
|
}
|
||||||
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
|
element.v_delete.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
|
||||||
element.v_delete.setImageBitmap(config.bitmaps.bin);
|
element.v_delete.setImageBitmap(config.bitmaps.bin);
|
||||||
element.v_delete.measure(0, 0);
|
element.v_delete.measure(0, 0);
|
||||||
@@ -2081,12 +2131,10 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
element.v_relative.addView(element.v_play);
|
|
||||||
element.v_relative.addView(element.v_delete);
|
element.v_relative.addView(element.v_delete);
|
||||||
|
|
||||||
return element.v_relative;
|
return element.v_relative;
|
||||||
}));
|
}));
|
||||||
s.ns0_listAdapterController = RhinoListAdapter.getController(s.ns0_listAdapter);
|
s.ns0_listAdapterController = RhinoListAdapter.getController(s.ns0_listAdapter);
|
||||||
@@ -2099,7 +2147,14 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
case 0: {
|
case 0: {
|
||||||
gui.dialogs.showConfirmDialog({
|
gui.dialogs.showConfirmDialog({
|
||||||
title: "如何导入本地乐谱",
|
title: "如何导入本地乐谱",
|
||||||
text: android.text.Html.fromHtml(String("本地乐谱文件夹在<b>SkyStudio</b>的乐谱存储位置\n" +
|
text: android.text.Html.fromHtml(String("本地乐谱文件夹在" + (function(){
|
||||||
|
try {
|
||||||
|
android.os.Build.VERSION_CODES.R
|
||||||
|
return "<b>Android标准文档文件夹</b>下"
|
||||||
|
} catch (e) {
|
||||||
|
return "<b>SkyStudio的乐谱存储位置</b>";
|
||||||
|
}
|
||||||
|
}()) + "\n" +
|
||||||
"<u><b>" + sheetmgr.rootDir + "</u></b>\n" +
|
"<u><b>" + sheetmgr.rootDir + "</u></b>\n" +
|
||||||
"将外部乐谱复制进这个文件夹即可\n\n" +
|
"将外部乐谱复制进这个文件夹即可\n\n" +
|
||||||
"注意:\n" +
|
"注意:\n" +
|
||||||
@@ -2117,6 +2172,19 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if(item.failed) {
|
||||||
|
gui.dialogs.showConfirmDialog({
|
||||||
|
title: "加载" + item.fileName + "失败",
|
||||||
|
text: android.text.Html.fromHtml(String("加载乐谱" + item.fileName + "失败\n\n原因:\n" + item.reason + "\n\n请检查以下内容:\n" +
|
||||||
|
(item.errtype == -1 ? "<b>1. 谱子编码是否为UTF16-LE</b>\n" : "<s>1. 谱子编码是否为UTF16-LE</s>\n") +
|
||||||
|
(item.errtype == 1 ? "<b>2. 谱子是否为未加密的JSON格式</b>\n" : "<s>2. 谱子是否为未加密的JSON格式</s>\n") +
|
||||||
|
(item.errtype == 2 ? "<b>3. 谱子是否有JSON语法错误</b>" : "<s>3. 谱子是否有JSON语法错误</s>")
|
||||||
|
).replace(new RegExp("\x0a", "gi"), "<br>")),
|
||||||
|
canExit: true,
|
||||||
|
buttons: ["确认"]
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
gui.dialogs.showDialog((function () {
|
gui.dialogs.showDialog((function () {
|
||||||
var scr = new android.widget.ScrollView(ctx);
|
var scr = new android.widget.ScrollView(ctx);
|
||||||
scr.setBackgroundColor(gui.config.colors.background);
|
scr.setBackgroundColor(gui.config.colors.background);
|
||||||
@@ -2221,13 +2289,17 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
});//上传乐谱提示
|
});//上传乐谱提示
|
||||||
s.ns0_listAdapterController.notifyChange();
|
s.ns0_listAdapterController.notifyChange();
|
||||||
threads.start(function() {
|
threads.start(function() {
|
||||||
sheetmgr.getLocalSheetList(isForce, function(i) {
|
sheetmgr.getLocalSheetList(isForce, function(successCount, failedCount) {
|
||||||
gui.run(function(){
|
gui.run(function(){
|
||||||
gui.main._global_title.setText("加载中: 共" + i + "首乐谱");
|
gui.main._global_title.setText("加载中: 共" + successCount + "首乐谱(" + failedCount + "失败)");
|
||||||
});
|
});
|
||||||
}).map(function(e, i) {
|
}).map(function(e, i) {
|
||||||
gui.run(function(){
|
gui.run(function(){
|
||||||
|
if(!e.failed) {
|
||||||
s.ns0_listAdapterController.add(e);
|
s.ns0_listAdapterController.add(e);
|
||||||
|
} else if(config.values.showFailedSheets){
|
||||||
|
s.ns0_listAdapterController.add(e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
gui.run(function() {
|
gui.run(function() {
|
||||||
@@ -2252,10 +2324,27 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
title: "共享乐谱",
|
title: "共享乐谱",
|
||||||
navigation_title: "共享乐谱",
|
navigation_title: "共享乐谱",
|
||||||
navigation_icon: config.bitmaps.online,
|
navigation_icon: config.bitmaps.online,
|
||||||
func: function(s) {
|
func: [{
|
||||||
this.getOnlineSheetList(s, true);
|
icon: android.graphics.Bitmap.createBitmap(config.bitmaps.refresh),
|
||||||
|
onClick: function(s, selfContent) {
|
||||||
|
if(s.ns1_isShowingSearchEditTextView) selfContent.removeSearchEditTextView(s, selfContent);
|
||||||
|
selfContent.getOnlineSheetList(s, true);
|
||||||
},
|
},
|
||||||
func_icon: android.graphics.Bitmap.createBitmap(config.bitmaps.refresh),
|
},/* {
|
||||||
|
icon: android.graphics.Bitmap.createBitmap(config.bitmaps.filter),
|
||||||
|
onClick: function(s, selfContent) {
|
||||||
|
toast("Click filter")
|
||||||
|
},
|
||||||
|
},*/ {
|
||||||
|
icon: android.graphics.Bitmap.createBitmap(config.bitmaps.search),
|
||||||
|
onClick: function(s, selfContent) {
|
||||||
|
if(s.ns1_isShowingSearchEditTextView) {
|
||||||
|
selfContent.removeSearchEditTextView(s, selfContent);
|
||||||
|
} else {
|
||||||
|
selfContent.showSearchEditTextView(s, selfContent);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}],
|
||||||
view: function(s) {
|
view: function(s) {
|
||||||
|
|
||||||
s.ns1_rl = new android.widget.RelativeLayout(ctx);
|
s.ns1_rl = new android.widget.RelativeLayout(ctx);
|
||||||
@@ -2270,7 +2359,9 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
|
|
||||||
element.isShowingStatusBar = false;
|
element.isShowingStatusBar = false;
|
||||||
|
|
||||||
if(element.type == -1) {
|
switch(element.type) {
|
||||||
|
//top notification
|
||||||
|
case -1: {
|
||||||
element.v_info = new android.widget.ImageView(ctx);
|
element.v_info = new android.widget.ImageView(ctx);
|
||||||
element.v_info.setId(10);
|
element.v_info.setId(10);
|
||||||
element.v_info.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
|
element.v_info.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
|
||||||
@@ -2291,9 +2382,12 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.v_upload.setTextColor(gui.config.colors.sec_text);
|
element.v_upload.setTextColor(gui.config.colors.sec_text);
|
||||||
element.v_upload.setText(element.title);
|
element.v_upload.setText(element.title);
|
||||||
element.v_relative.addView(element.v_upload);
|
element.v_relative.addView(element.v_upload);
|
||||||
return element.v_relative;
|
};break;
|
||||||
}
|
case -2: {
|
||||||
|
//empty result view
|
||||||
|
};break;
|
||||||
|
default: {
|
||||||
|
//sheet item
|
||||||
element.v_title = new android.widget.TextView(ctx);
|
element.v_title = new android.widget.TextView(ctx);
|
||||||
element.v_title.setId(10);
|
element.v_title.setId(10);
|
||||||
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
@@ -2396,7 +2490,7 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}); }
|
}); return true;}
|
||||||
}));
|
}));
|
||||||
element.v_relative.addView(element.download);
|
element.v_relative.addView(element.download);
|
||||||
|
|
||||||
@@ -2419,7 +2513,8 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.v_progress.setProgressDrawable(new android.graphics.drawable.ColorDrawable(gui.config.colors.background));
|
element.v_progress.setProgressDrawable(new android.graphics.drawable.ColorDrawable(gui.config.colors.background));
|
||||||
element.v_progress.setIndeterminate(false);
|
element.v_progress.setIndeterminate(false);
|
||||||
element.v_progress.setAlpha(0);
|
element.v_progress.setAlpha(0);
|
||||||
|
};break;
|
||||||
|
}
|
||||||
return element.v_relative;
|
return element.v_relative;
|
||||||
}));
|
}));
|
||||||
s.ns1_listAdapterController = RhinoListAdapter.getController(s.ns1_listAdapter);
|
s.ns1_listAdapterController = RhinoListAdapter.getController(s.ns1_listAdapter);
|
||||||
@@ -2428,7 +2523,8 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
s.ns1_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
s.ns1_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
|
||||||
onItemClick: function(parent, view, pos, id) {
|
onItemClick: function(parent, view, pos, id) {
|
||||||
var item = s.ns1_listAdapterController.get(pos);
|
var item = s.ns1_listAdapterController.get(pos);
|
||||||
if(item.type == -1) {
|
switch(item.type) {
|
||||||
|
case -1: {
|
||||||
switch(item.index) {
|
switch(item.index) {
|
||||||
case 0: {
|
case 0: {
|
||||||
gui.dialogs.showConfirmDialog({
|
gui.dialogs.showConfirmDialog({
|
||||||
@@ -2476,8 +2572,11 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
};break;
|
||||||
}
|
case -2: {
|
||||||
|
|
||||||
|
};break;
|
||||||
|
default: {
|
||||||
gui.dialogs.showDialog((function () {
|
gui.dialogs.showDialog((function () {
|
||||||
var scr = new android.widget.ScrollView(ctx);
|
var scr = new android.widget.ScrollView(ctx);
|
||||||
scr.setBackgroundColor(gui.config.colors.background);
|
scr.setBackgroundColor(gui.config.colors.background);
|
||||||
@@ -2536,6 +2635,9 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
scr.addView(layout)
|
scr.addView(layout)
|
||||||
return scr;
|
return scr;
|
||||||
}()), -2, -2, null, true);
|
}()), -2, -2, null, true);
|
||||||
|
}break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
s.ns1_rl.addView(s.ns1_listView);
|
s.ns1_rl.addView(s.ns1_listView);
|
||||||
@@ -2553,16 +2655,84 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
s.ns1_rl.addView(s.ns1_progress);
|
s.ns1_rl.addView(s.ns1_progress);
|
||||||
return s.ns1_rl;
|
return s.ns1_rl;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onPageChanged: function(s, selfContent) {
|
||||||
|
if(s.ns1_isShowingSearchEditTextView) selfContent.removeSearchEditTextView(s);
|
||||||
|
},
|
||||||
|
|
||||||
|
showSearchEditTextView: function(s, selfContent) {
|
||||||
|
gui.main.setFuncClickable(s.index, false);
|
||||||
|
s.ns1_isShowingSearchEditTextView = true;
|
||||||
|
s.ns1_searchEditText = new android.widget.EditText(ctx);
|
||||||
|
s.ns1_searchEditText.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
|
s.ns1_searchEditText.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -1));
|
||||||
|
s.ns1_searchEditText.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
|
||||||
|
s.ns1_searchEditText.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
|
||||||
|
s.ns1_searchEditText.setTextSize(15);
|
||||||
|
s.ns1_searchEditText.setTextColor(gui.config.colors.text);
|
||||||
|
s.ns1_searchEditText.setHintTextColor(gui.config.colors.sec_text);
|
||||||
|
s.ns1_searchEditText.setHint("按回车开始搜索");
|
||||||
|
s.ns1_searchEditText.setAlpha(0);
|
||||||
|
s.ns1_searchEditText.setOnClickListener(new android.view.View.OnClickListener({
|
||||||
|
onClick: function(view) {
|
||||||
|
view.setFocusable(true);
|
||||||
|
view.setFocusableInTouchMode(true);
|
||||||
|
view.requestFocus();
|
||||||
|
ctx.getSystemService(android.content.Context.INPUT_METHOD_SERVICE).showSoftInput(view, 0);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
s.ns1_searchEditText.setOnKeyListener(new android.view.View.OnKeyListener({
|
||||||
|
onKey: function(view, keycode, event) {
|
||||||
|
if (keycode == android.view.KeyEvent.KEYCODE_ENTER && event.getAction() == android.view.KeyEvent.ACTION_DOWN) {
|
||||||
|
selfContent.getOnlineSheetList(s, false, function(item) {
|
||||||
|
return (new RegExp(view.getText(), "gi")).test(item.name);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
gui.main._global_statusbar.addView(s.ns1_searchEditText);
|
||||||
|
s.ns1_searchEditText.setFocusable(true);
|
||||||
|
s.ns1_searchEditText.setFocusableInTouchMode(true);
|
||||||
|
s.ns1_searchEditText.requestFocus();
|
||||||
|
ctx.getSystemService(android.content.Context.INPUT_METHOD_SERVICE).showSoftInput(s.ns1_searchEditText, 0);
|
||||||
|
gui.main._global_title.setEnabled(false);
|
||||||
|
gui.main._global_title.setClickable(false);
|
||||||
|
gui.utils.value_animation("Float", 0, 1.0, 300 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
s.ns1_searchEditText.setAlpha(anim.getAnimatedValue());
|
||||||
|
gui.main._global_title.setAlpha(1.0 - anim.getAnimatedValue());
|
||||||
|
if(anim.getAnimatedValue() == 1.0) gui.main.setFuncClickable(s.index, true);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
removeSearchEditTextView: function(s, selfContent) { try {
|
||||||
|
s.ns1_isShowingSearchEditTextView = false;
|
||||||
|
gui.main.setFuncClickable(s.index, false);
|
||||||
|
s.ns1_searchEditText.setEnabled(false);
|
||||||
|
s.ns1_searchEditText.setClickable(false);
|
||||||
|
gui.main._global_title.setEnabled(true);
|
||||||
|
gui.main._global_title.setClickable(true);
|
||||||
|
gui.utils.value_animation("Float", 0, 1.0, 300 , new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
s.ns1_searchEditText.setAlpha(1.0 - anim.getAnimatedValue());
|
||||||
|
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
||||||
|
if(anim.getAnimatedValue() == 1.0) {
|
||||||
|
gui.main._global_statusbar.removeView(s.ns1_searchEditText);
|
||||||
|
gui.main.setFuncClickable(s.index, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {}},
|
||||||
|
|
||||||
update: function(s) {
|
update: function(s) {
|
||||||
if(s.initial) this.getOnlineSheetList(s, false);
|
if(s.initial) this.getOnlineSheetList(s, false);
|
||||||
},
|
},
|
||||||
getOnlineSheetList: function(s, isForce) {
|
getOnlineSheetList: function(s, isForce, filterBlock) {
|
||||||
gui.run(function() {
|
gui.run(function() {
|
||||||
gui.main.setFuncClickable(s.index, false);
|
gui.main.setFuncClickable(s.index, false);
|
||||||
s.ns1_progress.setIndeterminate(true);
|
s.ns1_progress.setIndeterminate(true);
|
||||||
s.ns1_listAdapterController.removeAll();
|
s.ns1_listAdapterController.removeAll();
|
||||||
s.ns1_listAdapterController.notifyChange();
|
s.ns1_listAdapterController.notifyChange();
|
||||||
gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
if(typeof(filterBlock) != "function") gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
||||||
});
|
});
|
||||||
gui.utils.value_animation("Float", 1.0, 0, 100, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 1.0, 0, 100, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
@@ -2583,7 +2753,13 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
s.ns1_listView.setAlpha(1);
|
s.ns1_listView.setAlpha(1);
|
||||||
gui.main._global_title.setText("获取列表中...");
|
gui.main._global_title.setText("获取列表中...");
|
||||||
threads.start(function() {
|
threads.start(function() {
|
||||||
sheetmgr.getOnlineSharedSheetInfoList(isForce).map(function(e, i) {
|
var list = [];
|
||||||
|
if(typeof(filterBlock) == "function") {
|
||||||
|
list = sheetmgr.filterOnlineSharedSheet(filterBlock);
|
||||||
|
} else {
|
||||||
|
list = sheetmgr.getOnlineSharedSheetInfoList(isForce);
|
||||||
|
}
|
||||||
|
list.map(function(e, i) {
|
||||||
gui.run(function() { s.ns1_listAdapterController.add(e); });
|
gui.run(function() { s.ns1_listAdapterController.add(e); });
|
||||||
});
|
});
|
||||||
gui.run(function() {
|
gui.run(function() {
|
||||||
@@ -2591,11 +2767,13 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
s.ns1_listAdapterController.notifyChange();
|
s.ns1_listAdapterController.notifyChange();
|
||||||
gui.main._global_title.setText(gui.main.getPageInfo(s.index).title);
|
gui.main._global_title.setText(gui.main.getPageInfo(s.index).title);
|
||||||
gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
|
||||||
s.ns1_listView.setAlpha(anim.getAnimatedValue());
|
s.ns1_listView.setAlpha(anim.getAnimatedValue());
|
||||||
s.ns1_progress.setAlpha(1 - anim.getAnimatedValue());
|
s.ns1_progress.setAlpha(1 - anim.getAnimatedValue());
|
||||||
if(anim.getAnimatedValue() == 1.0) s.ns1_progress.setIndeterminate(false);
|
if(anim.getAnimatedValue() == 1.0) s.ns1_progress.setIndeterminate(false);
|
||||||
});
|
});
|
||||||
|
if(typeof(filterBlock) != "function") gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
|
||||||
|
gui.main._global_title.setAlpha(anim.getAnimatedValue());
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2611,7 +2789,8 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
view: function(s) {
|
view: function(s) {
|
||||||
s.ns2_listView = new android.widget.ListView(ctx);
|
s.ns2_listView = new android.widget.ListView(ctx);
|
||||||
s.ns2_listView.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height));
|
s.ns2_listView.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, s._content_height));
|
||||||
s.ns2_listView.setAdapter(s.ns2_listAdapter = new RhinoListAdapter([{
|
s.ns2_listView.setAdapter(s.ns2_listAdapter = new RhinoListAdapter((function sList(){
|
||||||
|
sList.list = [{
|
||||||
type: "tag",
|
type: "tag",
|
||||||
name: "基本设置",
|
name: "基本设置",
|
||||||
}, {
|
}, {
|
||||||
@@ -2621,6 +2800,23 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
gui.main.__internal_dismiss();
|
gui.main.__internal_dismiss();
|
||||||
gui.key_coordinate_navigation.show();
|
gui.key_coordinate_navigation.show();
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
type: "checkbox",
|
||||||
|
name: "显示加载失败的乐谱",
|
||||||
|
check: config.values.showFailedSheets,
|
||||||
|
onClick: function(checked) {
|
||||||
|
config.values.showFailedSheets = config.save("show_failed_sheets", checked);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: "checkbox",
|
||||||
|
name: "启动脚本时显示存储提示",
|
||||||
|
check: config.values.tipOnAndroidR,
|
||||||
|
onClick: function(checked) {
|
||||||
|
config.values.tipOnAndroidR = config.save("tip_storage_on_android_r", checked);
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: "tag",
|
||||||
|
name: "关于",
|
||||||
}, {
|
}, {
|
||||||
type: "default",
|
type: "default",
|
||||||
name: "查看使用须知",
|
name: "查看使用须知",
|
||||||
@@ -2657,7 +2853,14 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
}, {
|
}, {
|
||||||
type: "tag",
|
type: "tag",
|
||||||
name: "Version: " + config.values.currentVersion + "(git@" + config.values.gitVersion + ")",
|
name: "Version: " + config.values.currentVersion + "(git@" + config.values.gitVersion + ")",
|
||||||
}], function self(element) {
|
}];
|
||||||
|
try {
|
||||||
|
android.os.Build.VERSION_CODES.R
|
||||||
|
} catch (e) {
|
||||||
|
sList.list.splice(3, 1);
|
||||||
|
}
|
||||||
|
return sList.list;
|
||||||
|
}()), function self(element) {
|
||||||
element.v_relative = new android.widget.RelativeLayout(ctx);
|
element.v_relative = new android.widget.RelativeLayout(ctx);
|
||||||
element.v_relative.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
element.v_relative.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-1, -2));
|
||||||
|
|
||||||
@@ -2675,7 +2878,6 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
break;
|
break;
|
||||||
case "default":
|
case "default":
|
||||||
element.v_title = new android.widget.TextView(ctx);
|
element.v_title = new android.widget.TextView(ctx);
|
||||||
element.v_title.setId(10);
|
|
||||||
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
||||||
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
|
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
|
||||||
@@ -2685,6 +2887,33 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
element.v_title.setText(element.name);
|
element.v_title.setText(element.name);
|
||||||
element.v_relative.addView(element.v_title);
|
element.v_relative.addView(element.v_title);
|
||||||
break;
|
break;
|
||||||
|
case "checkbox":
|
||||||
|
element.v_title = new android.widget.TextView(ctx);
|
||||||
|
element.v_title.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
|
||||||
|
element.v_title.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
||||||
|
element.v_title.getLayoutParams().setMargins(dp * 10, dp * 10, dp * 10, dp * 10);
|
||||||
|
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
|
||||||
|
element.v_title.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
|
||||||
|
element.v_title.setTextSize(14);
|
||||||
|
element.v_title.setTextColor(gui.config.colors.text);
|
||||||
|
element.v_title.setText(element.name);
|
||||||
|
element.v_relative.addView(element.v_title);
|
||||||
|
|
||||||
|
element.v_checkbox = new android.widget.CheckBox(ctx);
|
||||||
|
element.v_checkbox.setGravity(android.view.Gravity.CENTER | android.view.Gravity.CENTER);
|
||||||
|
element.v_checkbox.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
|
||||||
|
element.v_checkbox.getLayoutParams().setMargins(dp * 5, dp * 5, dp * 15, dp * 5);
|
||||||
|
element.v_checkbox.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
|
||||||
|
element.v_checkbox.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
|
||||||
|
element.v_checkbox.setFocusable(false);
|
||||||
|
element.v_checkbox.setChecked(element.check);
|
||||||
|
element.v_checkbox.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener({
|
||||||
|
onCheckedChanged: function(checkBox, value) {
|
||||||
|
element.onClick(value)
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
element.v_relative.addView(element.v_checkbox);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return element.v_relative;
|
return element.v_relative;
|
||||||
|
|
||||||
@@ -2698,6 +2927,10 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
switch(item.type) {
|
switch(item.type) {
|
||||||
case "default":
|
case "default":
|
||||||
item.onClick(view);
|
item.onClick(view);
|
||||||
|
break;
|
||||||
|
case "checkbox":
|
||||||
|
item.v_checkbox.performClick();
|
||||||
|
item.onClick(item.v_checkbox.isChecked());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
@@ -2706,7 +2939,7 @@ gui.dialogs.showProgressDialog(function(o) {
|
|||||||
});
|
});
|
||||||
gui.suspension.show();
|
gui.suspension.show();
|
||||||
o.close();
|
o.close();
|
||||||
ctx.moveTaskToBack(true);
|
//ctx.moveTaskToBack(true);
|
||||||
if(!config.values.skipRunScriptTip) {
|
if(!config.values.skipRunScriptTip) {
|
||||||
gui.dialogs.showConfirmDialog({
|
gui.dialogs.showConfirmDialog({
|
||||||
title: "使用须知",
|
title: "使用须知",
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
|
版本: 14
|
||||||
|
更新时间: 2020.09.03 20:51
|
||||||
|
更新内容:
|
||||||
|
* 新增:共享乐谱支持搜索功能
|
||||||
|
* 改善:窗口拓展功能
|
||||||
|
|
||||||
|
版本: 13
|
||||||
|
更新时间: 2020.09.05 10:46
|
||||||
|
更新内容:
|
||||||
|
* 改善:使用ThreadPool实现线程循环而不是持续创建新的线程
|
||||||
|
* 改善:在Idle和Paused状态时也能显示当前倍速
|
||||||
|
|
||||||
|
版本: 12
|
||||||
|
更新时间: 2020.09.01 23:12
|
||||||
|
更新内容:
|
||||||
|
* 修复:某个乐谱加载失败导致之后的乐谱不能加载的问题
|
||||||
|
* 新增:加载失败的乐谱会在列表显示,以及显示加载失败原因和建议(可以在设置中禁止显示)
|
||||||
|
* 修复:Android R无法加载乐谱的问题
|
||||||
|
* 新增:Android R启动提示(可在设置关闭提示)
|
||||||
|
|
||||||
版本: 11
|
版本: 11
|
||||||
更新时间: 2020.08.03 21:13
|
更新时间: 2020.08.03 21:13
|
||||||
更新内容:
|
更新内容:
|
||||||
|
|||||||
Reference in New Issue
Block a user