From 974820c661a7957742831a3c9395170f241b2925 Mon Sep 17 00:00:00 2001
From: StageGuard <1355416608@qq.com>
Date: Sat, 1 Aug 2020 16:26:18 +0800
Subject: [PATCH] Update version 10
---
source/SkyAutoplayer.js | 171 ++++++++++++++++++++++++++--------------
update_log.txt | 44 ++++++-----
2 files changed, 138 insertions(+), 77 deletions(-)
diff --git a/source/SkyAutoplayer.js b/source/SkyAutoplayer.js
index 5a1d961..03f1a48 100644
--- a/source/SkyAutoplayer.js
+++ b/source/SkyAutoplayer.js
@@ -101,7 +101,7 @@ sheetmgr = {
}()));
writable.close();
parsed = eval(parsed)[0];
- parsed.songNotes = sheetmgr.parseSongNote(parsed.songNotes);
+ //parsed.songNotes = sheetmgr.parseSongNote(parsed.songNotes);
parsed.fileName = sheet;
sheetmgr.cachedLocalSheetList.push(parsed);
listener({status:3});
@@ -114,21 +114,21 @@ sheetmgr = {
var sheets = files.listDir(this.rootDir, function(name){return name.endsWith(".txt");});
this.cachedLocalSheetList.length = 0;
for(var i in sheets) {
- if(listener != null) listener(i);
var readable = files.open(files.join(this.rootDir, sheets[i]), "r", this.encoding);
var parsed = eval(readable.read())[0];
readable.close();
- parsed.songNotes = this.parseSongNote(parsed.songNotes);
+ //parsed.songNotes = this.parseSongNote(parsed.songNotes);
parsed.fileName = sheets[i];
this.cachedLocalSheetList.push(parsed);
+ if(listener != null) listener(i);
}
},
__internal_fetchOnlineSharedSheets: function() {
config.fetchRepoFile("shared_sheets.json", config.values.gitVersion, function(body) {
sheetmgr.cachedOnlineSharedSheetInfoList = body.json().sheets;
- })
+ });
},
-
+ //解析乐谱是耗时操作
parseSongNote: function(raw) {
var r = [];
var t_time = 0;
@@ -250,7 +250,7 @@ sheetplayer = {
if(this.thread != null) this.stop();
this.thread = null;
this.name = j.name;
- this.notes = j.songNotes;
+ this.notes = sheetmgr.parseSongNote(j.songNotes);
this.pitch = j.pitchLevel;
this.bpm = j.bpm;
this.noteCount = j.songNotes.length;
@@ -286,7 +286,7 @@ config = {
skipOnlineUploadTip: false,
skipOnlineSharedSheetCTip: false,
skipImportLocalSheetTip: false,
- currentVersion: 9,
+ currentVersion: 10,
gitVersion: "",
},
@@ -687,7 +687,7 @@ gui = {
if (e.getAction() == e.ACTION_DOWN && canExit) {
frame.setEnabled(false);
frame.setClickable(false);
- gui.utils.value_animation("Float", 1.0, 0, 75, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 1.0, 0, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
frame.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 0) {
if(onDismiss != null) onDismiss(frame);
@@ -705,7 +705,7 @@ gui = {
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.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 0, 1, 75, new android.view.animation.DecelerateInterpolator(), function(anim) {
frame.setAlpha(anim.getAnimatedValue());
});
layout.setElevation(16 * dp);
@@ -788,7 +788,7 @@ gui = {
var o = this;
gui.run(function() {
try {
- gui.utils.value_animation("Float", 1, 0, 75, new android.view.animation.LinearInterpolator(), function(anim) {
+ 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);
});
@@ -928,7 +928,7 @@ gui = {
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.LinearInterpolator(), function(anim) {
+ 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);
});
@@ -964,6 +964,7 @@ gui = {
_global_title: null,
_global_navigation_bar: null,
_global_close: null,
+ _glonal_func: null,
isShowing: false,
current_navigation_selection: NaN,
@@ -985,7 +986,10 @@ gui = {
return;
}
}
- if(j instanceof Object) gui.main.views.push(j);
+ if(j instanceof Object) {
+ j.func_clickable = true;
+ gui.main.views.push(j);
+ }
},
getPage: function(index) {
@@ -1026,6 +1030,18 @@ gui = {
}
},
+ setFuncClickable: function(index, clickable) {
+ for(var i in gui.main.views) {
+ if(gui.main.views[i].index == index) {
+ gui.main.views[i].func_clickable = clickable;
+ if(gui.main.current == index && gui.main.isShowing) {
+ gui.main._glonal_func.setEnabled(clickable);
+ gui.main._glonal_func.setClickable(clickable);
+ }
+ }
+ }
+ },
+
//internal methods
__internal_show: function s(content) { gui.run(function(){
s.index = gui.main.current = content.index;
@@ -1088,14 +1104,14 @@ gui = {
gui.suspension.show();
}
}));
- s.func = new android.widget.ImageView(ctx);
- s.func.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * gui.main.status_bar_height, dp * gui.main.status_bar_height));
- s.func.setPadding(dp * 1, dp * 1, dp * 1, dp * 1);
- s.func.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 23);
- s.func.measure(0, 0);
- s.func.setBackgroundDrawable(gui.utils.ripple_drawable(s.func.getMeasuredWidth(), s.func.getMeasuredHeight(), "rect"));
- s.func.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
- s.statusBar.addView(s.func);
+ 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);
@@ -1155,11 +1171,11 @@ gui = {
gui.main.isShowing = true;
- gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
gui.main._global_base.setAlpha(anim.getAnimatedValue());
if(gui.main.views[s.index].update != null && anim.getAnimatedValue() == 1.0) gui.main.views[s.index].update(s);
});
- gui.utils.value_animation("Float", 0, 1.0, 400 , new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 0, 1.0, 400 , new android.view.animation.DecelerateInterpolator(), function(anim) {
gui.main._global_content_container.setAlpha(anim.getAnimatedValue());
gui.main._global_title.setAlpha(anim.getAnimatedValue());
});
@@ -1204,7 +1220,7 @@ gui = {
if(gui.main.views[tid].update != null && anim.getAnimatedValue() == 1.0) gui.main.views[tid].update(s);
}
});
- gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.LinearInterpolator(), 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());
});
@@ -1215,42 +1231,44 @@ gui = {
if(gui.main.func_showing) {
gui.main.func_showing = false;
gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.DecelerateInterpolator(), function(anim) {
- s.func.setTranslationX(anim.getAnimatedValue() * s.func.getMeasuredWidth());
- s.func.setAlpha(1 - anim.getAnimatedValue());
+ 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) {
- s.func.setClickable(false);
- s.func.setEnabled(false);
- s.func.setOnClickListener(new android.view.View.OnClickListener({
+ gui.main._glonal_func.setClickable(false);
+ gui.main._glonal_func.setEnabled(false);
+ gui.main._glonal_func.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {}
}));
- s.func.setImageBitmap(android.graphics.Bitmap.createBitmap(1, 1, android.graphics.Bitmap.Config.ARGB_8888));
+ gui.main._glonal_func.setImageBitmap(android.graphics.Bitmap.createBitmap(1, 1, android.graphics.Bitmap.Config.ARGB_8888));
}
});
}
} else {
if(gui.main.func_showing) {
- s.func.setOnClickListener(new android.view.View.OnClickListener({
+ gui.main._glonal_func.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {gui.main.views[s.index].func(s)}
}));
- s.func.setImageBitmap(gui.main.views[s.index].func_icon);
+ 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) {
- s.func.setAlpha(anim.getAnimatedValue());
+ gui.main._glonal_func.setAlpha(anim.getAnimatedValue());
});
} else {
gui.main.func_showing = true;
- s.func.setClickable(true);
- s.func.setEnabled(true);
- s.func.setOnClickListener(new android.view.View.OnClickListener({
+ 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)}
}));
- s.func.setImageBitmap(gui.main.views[s.index].func_icon);
+ 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) {
- s.func.setTranslationX(anim.getAnimatedValue() * s.func.getMeasuredWidth());
- s.func.setAlpha(1 - anim.getAnimatedValue());
+ gui.main._glonal_func.setTranslationX(anim.getAnimatedValue() * gui.main._glonal_func.getMeasuredWidth());
+ gui.main._glonal_func.setAlpha(1 - anim.getAnimatedValue());
});
}
}
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(){
if(gui.main._global_navigation_bar == null) return;
@@ -1325,7 +1343,7 @@ gui = {
gui.main.isShowing = false;
gui.main._global_close.setEnabled(false);
gui.main._global_close.setClickable(false);
- gui.utils.value_animation("Float", 1.0, 0, 200, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 1.0, 0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
gui.main._global_base.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 0) {
gui.winMgr.removeView(gui.main._global_base);
@@ -1398,7 +1416,7 @@ gui = {
dismiss: function() { gui.run(function(){
if (gui.suspension.isShowing) {
gui.suspension.isShowing = false;
- gui.utils.value_animation("Float", 1.0, 0, 200, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 1.0, 0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
gui.suspension._global_base.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 0) {
gui.winMgr.removeView(gui.suspension._global_base);
@@ -1423,8 +1441,6 @@ gui = {
current_index: 0,
- handler: new android.os.Handler(),
-
__internal_showTargetDots: function s() { gui.run(function(){
if(!gui.key_coordinate_navigation.isShowing) {
gui.key_coordinate_navigation._global_base = new android.widget.TextView(ctx);
@@ -1558,7 +1574,7 @@ gui = {
cx: null,
cy: null,
- __internal_showPanel: function s() { gui.run(function(){
+ __internal_showPanel: function s(sheet) { gui.run(function(){
if(!gui.player_panel.isShowing) {
gui.player_panel._global_base = new android.widget.RelativeLayout(ctx);
gui.player_panel._global_base.setLayoutParams(new android.widget.LinearLayout.LayoutParams(-2, -2));
@@ -1571,6 +1587,7 @@ gui = {
gui.player_panel._global_text.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
gui.player_panel._global_text.setTextColor(gui.config.colors.text);
gui.player_panel._global_text.setTextSize(14);
+ gui.player_panel._global_text.setText("解析中...");
//gui.player_panel._global_text.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
gui.player_panel._global_text.getLayoutParams().setMargins(0, 0, 0, dp * 2);
gui.player_panel._global_text.setOnTouchListener(new android.view.View.OnTouchListener({
@@ -1618,8 +1635,6 @@ gui = {
gui.player_panel._global_seek = new android.widget.SeekBar(ctx);
gui.player_panel._global_seek.setId(13);
- gui.player_panel._global_seek.setMax(sheetplayer.noteCount);
- gui.player_panel._global_seek.setMin(0);
gui.player_panel._global_seek.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, -2));
gui.player_panel._global_seek.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 12);
gui.player_panel._global_seek.getLayoutParams().setMargins(0, dp * 2, 0, dp * 2);
@@ -1630,6 +1645,8 @@ gui = {
sheetplayer.setProgress(sb.getProgress());
},
}));
+ gui.player_panel._global_seek.setEnabled(false);
+ gui.player_panel._global_seek.setClickable(false);
gui.player_panel._global_base.addView(gui.player_panel._global_seek);
@@ -1659,6 +1676,8 @@ gui = {
sheetplayer.play(gui.player_panel.refreshStatus);
}
}));
+ s.play.setEnabled(false);
+ s.play.setClickable(false);
s.control_panel.addView(s.play);
s.pause = new android.widget.ImageView(ctx);
@@ -1673,6 +1692,8 @@ gui = {
sheetplayer.pause();
}
}));
+ s.pause.setEnabled(false);
+ s.pause.setClickable(false);
s.control_panel.addView(s.pause);
gui.player_panel._global_cnote = new android.widget.TextView(ctx);
@@ -1706,14 +1727,45 @@ gui = {
gui.winMgr.updateViewLayout(gui.player_panel._global_base, s.lp);
gui.player_panel.isShowing = true;
- gui.player_panel._global_text.setText(sheetplayer.name);
+ gui.player_panel.refreshStatus();
if(!config.values.skipOpenPlayerPanelWindowTip) {
toast("拖动标题栏的标题文字来移动弹奏控制面板悬浮窗。");
config.values.skipOpenPlayerPanelWindowTip = config.save("skip_open_player_panel_window_tip", true);
}
- gui.player_panel.refreshStatus();
+ threads.start(function() {
+ sheetplayer.setSheet(sheet);
+ gui.run(function() {
+ gui.player_panel._global_text.setText(sheetplayer.name);
+ gui.player_panel._global_seek.setMax(sheetplayer.noteCount);
+ gui.player_panel._global_seek.setMin(0);
+ s.play.setEnabled(true);
+ s.play.setClickable(true);
+ s.pause.setEnabled(true);
+ s.pause.setClickable(true);
+ gui.player_panel._global_seek.setEnabled(true);
+ gui.player_panel._global_seek.setClickable(true);
+ gui.player_panel.refreshStatus();
+ //一点都不优雅
+ var h = new android.os.Handler();
+ h.postDelayed(function() {
+ gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.player_panel._global_text.setAlpha(anim.getAnimatedValue());
+ });
+ }, 0);
+ h.postDelayed(function() {
+ gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.player_panel._global_seek.setAlpha(anim.getAnimatedValue());
+ });
+ }, 20);
+ h.postDelayed(function() {
+ gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) {
+ s.control_panel.setAlpha(anim.getAnimatedValue());
+ });
+ }, 40);
+ });
+ });
}
});},
refreshStatus: function() { gui.run(function(){
@@ -1869,9 +1921,8 @@ gui.dialogs.showProgressDialog(function(o) {
element.v_play.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {
if(config.values.key_coordinates.length == 15 && gui.main.isShowing) {
- sheetplayer.setSheet(element);
gui.main.__internal_dismiss();
- gui.player_panel.__internal_showPanel();
+ gui.player_panel.__internal_showPanel(element);
} else {
toast("未设置键位坐标或坐标数据错误,请前往设置页设置键位坐标");
}
@@ -2021,13 +2072,13 @@ gui.dialogs.showProgressDialog(function(o) {
},
update: function(s) {
if(s.initial) this.getSheetList(s, false);
-
},
getSheetList: function(s, isForce) {
gui.run(function() {
s.ns0_progress.setIndeterminate(true);
s.ns0_listAdapterController.removeAll();
- gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.main.setFuncClickable(s.index, false);
+ gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.DecelerateInterpolator(), function(anim) {
gui.main._global_title.setAlpha(anim.getAnimatedValue());
});
gui.utils.value_animation("Float", 1.0, 0, 100, new android.view.animation.DecelerateInterpolator(), function(anim) {
@@ -2047,9 +2098,12 @@ gui.dialogs.showProgressDialog(function(o) {
gui.main._global_title.setText("加载中: 共" + i + "首乐谱");
});
}).map(function(e, i) {
- s.ns0_listAdapterController.add(e);
+ gui.run(function(){
+ s.ns0_listAdapterController.add(e);
+ });
});
gui.run(function() {
+ gui.main.setFuncClickable(s.index, true);
s.ns0_listAdapterController.notifyChange();
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) {
@@ -2166,7 +2220,7 @@ gui.dialogs.showProgressDialog(function(o) {
element.isShowingStatusBar = true;
element.v_progress.setIndeterminate(true);
element.v_desc.getLayoutParams().setMargins(dp * 15, dp * 2, dp * 15, dp * 1);
- gui.utils.value_animation("Float", 0, 1.0, 150, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 0, 1.0, 150, new android.view.animation.DecelerateInterpolator(), function(anim) {
element.v_progress.setAlpha(anim.getAnimatedValue());
element.v_status.setAlpha(anim.getAnimatedValue());
});
@@ -2182,7 +2236,7 @@ gui.dialogs.showProgressDialog(function(o) {
case 3: {
if(gui.main.isShowing) { gui.run(function() {
toast("下载完成: " + element.name + "\n请在本地曲谱页面刷新");
- gui.utils.value_animation("Float", 1, 0, 150, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 1, 0, 150, new android.view.animation.DecelerateInterpolator(), function(anim) {
element.v_progress.setAlpha(anim.getAnimatedValue());
element.v_status.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 0) {
@@ -2198,7 +2252,7 @@ gui.dialogs.showProgressDialog(function(o) {
case -1: {
if(gui.main.isShowing) { gui.run(function() {
toast("下载" + element.name + "失败: " + r.msg);
- gui.utils.value_animation("Float", 1, 0, 150, new android.view.animation.LinearInterpolator(), function(anim) {
+ gui.utils.value_animation("Float", 1, 0, 150, new android.view.animation.DecelerateInterpolator(), function(anim) {
element.v_progress.setAlpha(anim.getAnimatedValue());
element.v_status.setAlpha(anim.getAnimatedValue());
if(anim.getAnimatedValue() == 0) {
@@ -2343,7 +2397,6 @@ gui.dialogs.showProgressDialog(function(o) {
"
" +
"简介:
" +
item.desc.replace(new RegExp("\x0a", "gi"), "
")
-
+ ""
));
text.setPadding(0, 0, 0, 10 * dp);
@@ -2376,10 +2429,11 @@ gui.dialogs.showProgressDialog(function(o) {
},
getOnlineSheetList: function(s, isForce) {
gui.run(function() {
+ gui.main.setFuncClickable(s.index, false);
s.ns1_progress.setIndeterminate(true);
s.ns1_listAdapterController.removeAll();
s.ns1_listAdapterController.notifyChange();
- gui.utils.value_animation("Float", 0, 1.0, 200, new android.view.animation.LinearInterpolator(), 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());
});
gui.utils.value_animation("Float", 1.0, 0, 100, new android.view.animation.DecelerateInterpolator(), function(anim) {
@@ -2401,9 +2455,10 @@ gui.dialogs.showProgressDialog(function(o) {
gui.main._global_title.setText("获取列表中...");
threads.start(function() {
sheetmgr.getOnlineSharedSheetInfoList(isForce).map(function(e, i) {
- s.ns1_listAdapterController.add(e);
+ gui.run(function() { s.ns1_listAdapterController.add(e); });
});
gui.run(function() {
+ gui.main.setFuncClickable(s.index, true);
s.ns1_listAdapterController.notifyChange();
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) {
diff --git a/update_log.txt b/update_log.txt
index 2940422..e518793 100644
--- a/update_log.txt
+++ b/update_log.txt
@@ -1,51 +1,57 @@
+版本: 9
+更新时间: 2020.08.01 16:25
+更新内容:
+ * 更改:乐谱解析工作移至弹奏控制界面
+ * 新增:导入本地乐谱提示
+ * 修复:ListAdapter未收到列表更新通知
+
版本: 9
更新时间: 2020.07.30 10:21
更新内容:
- * 修复了连按两次悬浮窗按钮导致进入主界面时不会加载曲谱的问题
- * 更改文件下载逻辑
+ * 修复:连按两次悬浮窗按钮导致进入主界面时不会加载曲谱的问题
+ * 更改:文件下载逻辑
版本: 8
更新时间: 2020.07.29 23:20
更新内容:
- * 更改悬浮窗按钮从"小黑块"变为类Sky的"凹面钻石"形状
- * 从悬浮窗打开主窗口时会继承上次关闭主窗口时页面位置
- * 更改了乐谱下载逻辑
- * 修复打开主窗口时动画卡顿
+ * 更改:悬浮窗按钮从"小黑块"变为类Sky的"凹面钻石"形状
+ * 新增:从悬浮窗打开主窗口时会继承上次关闭主窗口时页面位置
+ * 更改:乐谱下载逻辑
+ * 修复:打开主窗口时动画卡顿
! 已知问题: 乐谱保存为UTF-8格式而非UTF-16LE且files.open(file, mode, encoding)无法更改
版本: 7
更新时间: 2020.07.26 20:07
更新内容:
- * 现在弹奏控制面板可以移动位置
- * 增加悬浮窗首次显示时的提示
- * 设置中增加"结束脚本运行"选项
-
+ * 新增:现在弹奏控制面板可以移动位置
+ * 新增:悬浮窗首次显示时的提示
+ * 新增:设置中增加"结束脚本运行"选项
版本: 6
更新时间: 2020.07.25 18:47
更新内容:
- * 修复: 当SkyStudio Sheets文件夹不存在时无法下载在线共享乐谱的问题
+ * 修复:当SkyStudio Sheets文件夹不存在时无法下载在线共享乐谱的问题
版本: 5
更新时间: 2020.07.24 13:00
更新内容:
- * 修复了乐谱最后一个键不弹的问题
- * 增加了启动提示
+ * 修复:乐谱最后一个键不弹的问题
+ * 新增:启动提示
版本: 4
更新时间: 2020.07.23 11:41
更新内容:
- * 使用gestures代替click以解决漏按问题
+ * 更改:使用gestures代替click以解决漏按问题
版本: 3
更新时间: 2020.07.23 09:30
更新内容:
- * 启用"在线共享乐谱"功能
- * UI标题栏颜色改为灰色
- * 添加乐谱详情界面,点击列表项目查看
- * 修复BUG
+ * 新增:启用"在线共享乐谱"功能
+ * 更改:UI标题栏颜色改为灰色
+ * 新增:乐谱详情界面,点击列表项目查看
+ * 修复:一些BUG
版本: 2
更新时间: 2020.07.22 13:23
更新内容:
- * 修复有时WindowManager.remove会出现移除detached window的情况
\ No newline at end of file
+ * 修复:有时WindowManager.remove会出现移除detached window的情况
\ No newline at end of file