Update version 11

This commit is contained in:
StageGuard
2020-08-03 21:18:09 +08:00
parent abdf7a9017
commit c9358e6a4c
2 changed files with 159 additions and 42 deletions

View File

@@ -198,6 +198,27 @@ sheetplayer = {
playing: false, playing: false,
nextInterval: 0, nextInterval: 0,
speed: 1,
current_speed_index: 6,
speed_list: [
0.1,
0.2,
0.4,
0.5,
0.6,
0.8,
1,
1.2,
1.4,
1.5,
1.6,
1.8,
2,
3,
4,
5
],
thread: null, thread: null,
play: function(listener) { play: function(listener) {
@@ -226,7 +247,7 @@ sheetplayer = {
eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");"); eval("gestures(" + gestureMap.slice(1, gestureMap.length - 1) + ");");
}); });
if(listener != null) listener(); if(listener != null) listener();
java.lang.Thread.sleep(sheetplayer.nextInterval); java.lang.Thread.sleep(sheetplayer.nextInterval = Math.round(sheetplayer.nextInterval * sheetplayer.speed));
sheetplayer.currentNote ++; sheetplayer.currentNote ++;
} }
}); });
@@ -242,6 +263,18 @@ sheetplayer = {
this.playing = false; this.playing = false;
}, },
speed_up: function() {
if((this.current_speed_index + 1) < this.speed_list.length) {
this.speed = 1 / this.speed_list[++ this.current_speed_index];
}
},
slow_down: function() {
if((this.current_speed_index - 1) >= 0) {
this.speed = 1 / this.speed_list[-- this.current_speed_index];
}
},
setProgress: function(p) { setProgress: function(p) {
this.currentNote = p; this.currentNote = p;
}, },
@@ -332,7 +365,7 @@ config = {
fetchResources: function(listener) { fetchResources: function(listener) {
var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/"; var remoteHost = "https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript@" + this.values.gitVersion + "/resources/";
var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png"]; var resourceList = ["local.png", "online.png", "play.png", "pause.png", "refresh.png", "settings.png", "info.png", "download.png", "bin.png", "speedup.png"];
var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/"; var localRootDir = android.os.Environment.getExternalStorageDirectory() + "/Documents/SkyAutoPlayer/";
var downloadQueue = []; var downloadQueue = [];
var tryCount = 1; var tryCount = 1;
@@ -404,7 +437,7 @@ config = {
return; return;
} else { } else {
var errorCollector = resp.statusCode + ": " + resp.statusMessage + "\n"; var errorCollector = resp.statusCode + ": " + resp.statusMessage + "\n";
resp = http.get(encodeURI("https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript" + (version == null ? "" : ("@" + gitVersion)) + "/" + path)); resp = http.get(encodeURI("https://cdn.jsdelivr.net/gh/StageGuard/SkyAutoPlayerScript" + (gitVersion == null ? "" : ("@" + gitVersion)) + "/" + path));
if(resp.statusCode >= 200 && resp.statusCode < 300) { if(resp.statusCode >= 200 && resp.statusCode < 300) {
successCbk(resp.body); successCbk(resp.body);
return; return;
@@ -1320,7 +1353,6 @@ gui = {
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(index)))) return;
if(gui.main.current_navigation_selection == index) return; if(gui.main.current_navigation_selection == index) return;
var argbE = new android.animation.ArgbEvaluator();
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(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());
@@ -1588,6 +1620,8 @@ gui = {
gui.player_panel._global_text.setTextColor(gui.config.colors.text); gui.player_panel._global_text.setTextColor(gui.config.colors.text);
gui.player_panel._global_text.setTextSize(14); gui.player_panel._global_text.setTextSize(14);
gui.player_panel._global_text.setText("解析中..."); gui.player_panel._global_text.setText("解析中...");
gui.player_panel._global_text.setSingleLine(true);
gui.player_panel._global_text.setEllipsize(android.text.TextUtils.TruncateAt.END);
//gui.player_panel._global_text.setPadding(dp * 5, dp * 5, dp * 5, dp * 5); //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.getLayoutParams().setMargins(0, 0, 0, dp * 2);
gui.player_panel._global_text.setOnTouchListener(new android.view.View.OnTouchListener({ gui.player_panel._global_text.setOnTouchListener(new android.view.View.OnTouchListener({
@@ -1632,7 +1666,6 @@ gui = {
})); }));
gui.player_panel._global_base.addView(s.close); gui.player_panel._global_base.addView(s.close);
gui.player_panel._global_seek = new android.widget.SeekBar(ctx); gui.player_panel._global_seek = new android.widget.SeekBar(ctx);
gui.player_panel._global_seek.setId(13); gui.player_panel._global_seek.setId(13);
gui.player_panel._global_seek.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, -2)); gui.player_panel._global_seek.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, -2));
@@ -1649,28 +1682,83 @@ gui = {
gui.player_panel._global_seek.setClickable(false); gui.player_panel._global_seek.setClickable(false);
gui.player_panel._global_base.addView(gui.player_panel._global_seek); gui.player_panel._global_base.addView(gui.player_panel._global_seek);
s.control_panel = new android.widget.RelativeLayout(ctx);
s.control_panel = new android.widget.LinearLayout(ctx); s.control_panel.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-1, -2));
s.control_panel.setGravity(android.view.Gravity.CENTER | android.view.Gravity.CENTER);
s.control_panel.setOrientation(android.widget.LinearLayout.HORIZONTAL);
s.control_panel.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
s.control_panel.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 13); s.control_panel.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 13);
gui.player_panel._global_status = new android.widget.TextView(ctx); gui.player_panel._global_status = new android.widget.TextView(ctx);
gui.player_panel._global_status.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * 110, dp * 22)); gui.player_panel._global_status.setId(14);
s.control_panel.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER); gui.player_panel._global_status.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 275, -2));
gui.player_panel._global_status.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
gui.player_panel._global_status.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_TOP);
gui.player_panel._global_status.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
gui.player_panel._global_status.getLayoutParams().setMargins(0, 0, 0, dp * 1);
gui.player_panel._global_status.setTextColor(gui.config.colors.sec_text); gui.player_panel._global_status.setTextColor(gui.config.colors.sec_text);
gui.player_panel._global_status.setTextSize(12); gui.player_panel._global_status.setTextSize(12);
//gui.player_panel._global_status.setPadding(dp * 5, dp * 5, dp * 5, dp * 5); //gui.player_panel._global_status.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
s.control_panel.addView(gui.player_panel._global_status); s.control_panel.addView(gui.player_panel._global_status);
gui.player_panel._global_cnote = new android.widget.TextView(ctx);
gui.player_panel._global_cnote.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 275, -2));
gui.player_panel._global_cnote.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_LEFT);
gui.player_panel._global_cnote.getLayoutParams().addRule(android.widget.RelativeLayout.BELOW, 14);
gui.player_panel._global_cnote.setGravity(android.view.Gravity.LEFT | android.view.Gravity.CENTER);
gui.player_panel._global_cnote.getLayoutParams().setMargins(0, dp * 1, 0, 0);
gui.player_panel._global_cnote.setTextColor(gui.config.colors.sec_text);
gui.player_panel._global_cnote.setTextSize(12);
//gui.player_panel._global_cnote.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
s.control_panel.addView(gui.player_panel._global_cnote);
s.speedr = new android.widget.ImageView(ctx);
s.speedr.setId(15);
s.speedr.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
s.speedr.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 17, dp * 17));
s.speedr.getLayoutParams().addRule(android.widget.RelativeLayout.ALIGN_PARENT_RIGHT);
s.speedr.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
s.speedr.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8);
s.speedr.setImageBitmap(config.bitmaps.speedup);
s.speedr.measure(0, 0);
s.speedr.setBackgroundDrawable(gui.utils.ripple_drawable(s.speedr.getMeasuredWidth(), s.speedr.getMeasuredHeight(), "rect"));
s.speedr.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {
sheetplayer.speed_up();
gui.player_panel.refreshStatus();
}
}));
s.speedr.setEnabled(false);
s.speedr.setClickable(false);
s.control_panel.addView(s.speedr);
s.pause = new android.widget.ImageView(ctx);
s.pause.setId(16);
s.pause.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
s.pause.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 22, dp * 22));
s.pause.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 15);
s.pause.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
s.pause.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8);
s.pause.setImageBitmap(config.bitmaps.pause);
s.pause.measure(0, 0);
s.pause.setBackgroundDrawable(gui.utils.ripple_drawable(s.pause.getMeasuredWidth(), s.pause.getMeasuredHeight(), "rect"));
s.pause.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() {
sheetplayer.pause();
gui.player_panel.refreshStatus();
}
}));
s.pause.setEnabled(false);
s.pause.setClickable(false);
s.control_panel.addView(s.pause);
s.play = new android.widget.ImageView(ctx); s.play = new android.widget.ImageView(ctx);
s.play.setId(17);
s.play.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP); s.play.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
s.play.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * 22, dp * 22)); s.play.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 22, dp * 22));
s.play.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 16);
s.play.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
s.play.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8); s.play.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8);
s.play.setImageBitmap(config.bitmaps.play); s.play.setImageBitmap(config.bitmaps.play);
s.play.measure(0, 0); s.play.measure(0, 0);
s.play.setBackgroundDrawable(gui.utils.ripple_drawable(s.close.getMeasuredWidth(), s.close.getMeasuredHeight(), "rect")); s.play.setBackgroundDrawable(gui.utils.ripple_drawable(s.play.getMeasuredWidth(), s.play.getMeasuredHeight(), "rect"));
s.play.setOnClickListener(new android.view.View.OnClickListener({ s.play.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() { onClick: function() {
sheetplayer.play(gui.player_panel.refreshStatus); sheetplayer.play(gui.player_panel.refreshStatus);
@@ -1680,29 +1768,25 @@ gui = {
s.play.setClickable(false); s.play.setClickable(false);
s.control_panel.addView(s.play); s.control_panel.addView(s.play);
s.pause = new android.widget.ImageView(ctx); s.speedl = new android.widget.ImageView(ctx);
s.pause.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP); s.speedl.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
s.pause.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * 22, dp * 22)); s.speedl.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(dp * 17, dp * 17));
s.pause.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8); s.speedl.getLayoutParams().addRule(android.widget.RelativeLayout.LEFT_OF, 17);
s.pause.setImageBitmap(config.bitmaps.pause); s.speedl.getLayoutParams().addRule(android.widget.RelativeLayout.CENTER_VERTICAL);
s.pause.measure(0, 0); s.speedl.getLayoutParams().setMargins(dp * 8, dp * 8, dp * 8, dp * 8);
s.pause.setBackgroundDrawable(gui.utils.ripple_drawable(s.close.getMeasuredWidth(), s.close.getMeasuredHeight(), "rect")); s.speedl.setImageBitmap(config.bitmaps.speedup);
s.pause.setOnClickListener(new android.view.View.OnClickListener({ s.speedl.setRotation(180);
s.speedl.measure(0, 0);
s.speedl.setBackgroundDrawable(gui.utils.ripple_drawable(s.speedl.getMeasuredWidth(), s.speedl.getMeasuredHeight(), "rect"));
s.speedl.setOnClickListener(new android.view.View.OnClickListener({
onClick: function() { onClick: function() {
sheetplayer.pause(); sheetplayer.slow_down();
gui.player_panel.refreshStatus();
} }
})); }));
s.pause.setEnabled(false); s.speedl.setEnabled(false);
s.pause.setClickable(false); s.speedl.setClickable(false);
s.control_panel.addView(s.pause); s.control_panel.addView(s.speedl);
gui.player_panel._global_cnote = new android.widget.TextView(ctx);
gui.player_panel._global_cnote.setLayoutParams(new android.widget.LinearLayout.LayoutParams(dp * 110, dp * 22));
s.control_panel.setGravity(android.view.Gravity.CENTER | android.view.Gravity.CENTER);
gui.player_panel._global_cnote.setTextColor(gui.config.colors.sec_text);
gui.player_panel._global_cnote.setTextSize(12);
//gui.player_panel._global_cnote.setPadding(dp * 5, dp * 5, dp * 5, dp * 5);
s.control_panel.addView(gui.player_panel._global_cnote);
gui.player_panel._global_base.addView(s.control_panel); gui.player_panel._global_base.addView(s.control_panel);
@@ -1737,41 +1821,67 @@ gui = {
threads.start(function() { threads.start(function() {
sheetplayer.setSheet(sheet); sheetplayer.setSheet(sheet);
gui.run(function() { gui.run(function() {
gui.player_panel._global_text.setText(sheetplayer.name);
gui.player_panel._global_seek.setMax(sheetplayer.noteCount); gui.player_panel._global_seek.setMax(sheetplayer.noteCount);
gui.player_panel._global_seek.setMin(0); gui.player_panel._global_seek.setMin(0);
s.play.setEnabled(true); s.play.setEnabled(true);
s.play.setClickable(true); s.play.setClickable(true);
s.pause.setEnabled(true); s.pause.setEnabled(true);
s.pause.setClickable(true); s.pause.setClickable(true);
s.speedl.setEnabled(true);
s.speedl.setClickable(true);
s.speedr.setEnabled(true);
s.speedr.setClickable(true);
gui.player_panel._global_seek.setEnabled(true); gui.player_panel._global_seek.setEnabled(true);
gui.player_panel._global_seek.setClickable(true); gui.player_panel._global_seek.setClickable(true);
gui.player_panel.refreshStatus(); gui.player_panel.refreshStatus();
//一点都不优雅 //一点都不优雅
var h = new android.os.Handler(); var h = new android.os.Handler();
h.postDelayed(function() { h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) { gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
gui.player_panel._global_text.setAlpha(anim.getAnimatedValue()); gui.player_panel._global_text.setAlpha(anim.getAnimatedValue());
}); });
gui.player_panel._global_text.setText(sheetplayer.name);
}, 0); }, 0);
h.postDelayed(function() { h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) { gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
gui.player_panel._global_seek.setAlpha(anim.getAnimatedValue()); gui.player_panel._global_seek.setAlpha(anim.getAnimatedValue());
s.close.setAlpha(anim.getAnimatedValue());
}); });
}, 20); }, 30);
h.postDelayed(function() { h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 200 , new android.view.animation.LinearInterpolator(), function(anim) { gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
s.control_panel.setAlpha(anim.getAnimatedValue()); gui.player_panel._global_status.setAlpha(anim.getAnimatedValue());
s.speedl.setAlpha(anim.getAnimatedValue());
}); });
}, 40); }, 60);
h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
gui.player_panel._global_cnote.setAlpha(anim.getAnimatedValue());
s.play.setAlpha(anim.getAnimatedValue());
});
}, 90);
h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
s.pause.setAlpha(anim.getAnimatedValue());
});
}, 120);
h.postDelayed(function() {
gui.utils.value_animation("Float", 0, 1, 300 , new android.view.animation.LinearInterpolator(), function(anim) {
s.speedr.setAlpha(anim.getAnimatedValue());
});
}, 150);
}); });
}); });
} }
});}, });},
refreshStatus: function() { gui.run(function(){ refreshStatus: function() { gui.run(function(){
gui.player_panel._global_status.setText(String(sheetplayer.playing ? (Number(sheetplayer.currentNote + 1) + "/" + sheetplayer.noteCount + " -> " + sheetplayer.nextInterval + "ms") : (sheetplayer.thread == null ? "Idle" : "Paused"))); 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_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.player_panel._global_cnote.setAlpha(anim.getAnimatedValue());
gui.player_panel._global_status.setAlpha(anim.getAnimatedValue());
});
});}, });},
__internal_dismiss: function() { gui.run(function(){ __internal_dismiss: function() { gui.run(function(){

View File

@@ -1,3 +1,10 @@
版本: 11
更新时间: 2020.08.01 21:13
更新内容:
* 新增:弹奏速度控制
* 新增:弹奏控制面板动画
* 修复:上个版本已知问题
版本: 10 版本: 10
更新时间: 2020.08.01 16:25 更新时间: 2020.08.01 16:25
更新内容: 更新内容: