Add keyboard

This commit is contained in:
oc 2018-12-22 02:14:28 +08:00
parent db399dd39d
commit 2a63fea57e
9 changed files with 84 additions and 60 deletions

View File

@ -62,7 +62,7 @@ HTML5 canvas制作的魔塔样板支持全平台游戏
* [x] \r[red]可以动态调整剧情文本的颜色 * [x] \r[red]可以动态调整剧情文本的颜色
* [x] 升级事件改用事件编辑器完成 * [x] 升级事件改用事件编辑器完成
* [x] 每层楼都增添该层的并行事件处理 * [x] 每层楼都增添该层的并行事件处理
* [x] 新增快捷键N返回标题P查看评论O打开工程 * [x] 新增快捷键N返回标题P游戏主页O打开工程
* [x] 新增事件:设置全局属性或全局数值 * [x] 新增事件:设置全局属性或全局数值
* [x] 新增事件:隐藏/显示状态栏 * [x] 新增事件:隐藏/显示状态栏
* [x] 道具可以设置是否在回放时绘制道具栏或直接使用 * [x] 道具可以设置是否在回放时绘制道具栏或直接使用

View File

@ -473,7 +473,7 @@ HTML5魔塔一大亮点就是存在录像系统可以很方便进行录像回
- **[G]** 打开/关闭楼层传送器 - **[G]** 打开/关闭楼层传送器
- **[A]** 读取自动存档 - **[A]** 读取自动存档
- **[S/D]** 打开/关闭存/读档页面 - **[S/D]** 打开/关闭存/读档页面
- **[K/V]** 打开/关闭快捷商店选择列表 - **[V]** 打开/关闭快捷商店选择列表
- **[T]** 打开/关闭工具栏 - **[T]** 打开/关闭工具栏
- **[Q]** 打开/关闭装备栏 - **[Q]** 打开/关闭装备栏
- **[ESC]** 打开/关闭系统菜单 - **[ESC]** 打开/关闭系统菜单

View File

@ -196,10 +196,14 @@ actions.prototype.keyUp = function(keyCode, altKey, fromReplay) {
if (!fromReplay && core.isset(core.status.replay)&&core.status.replay.replaying if (!fromReplay && core.isset(core.status.replay)&&core.status.replay.replaying
&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0&&core.status.event.id!='viewMaps') return; &&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0&&core.status.event.id!='viewMaps') return;
var ok = function (keycode) {
return keycode==27 || keycode==88 || keycode==13 || keycode==32 || keycode==67;
}
if (core.status.lockControl) { if (core.status.lockControl) {
core.status.holdingKeys = []; core.status.holdingKeys = [];
// 全键盘操作部分 // 全键盘操作部分
if (core.status.event.id == 'text' && (keyCode==13 || keyCode==32 || keyCode==67)) { if (core.status.event.id == 'text' && ok(keyCode)) {
core.drawText(); core.drawText();
return; return;
} }
@ -211,15 +215,19 @@ actions.prototype.keyUp = function(keyCode, altKey, fromReplay) {
this.keyUpAction(keyCode); this.keyUpAction(keyCode);
return; return;
} }
if (core.status.event.id=='about' && (keyCode==13 || keyCode==32 || keyCode==67)) { if (core.status.event.id=='about' && ok(keyCode)) {
this.clickAbout(); this.clickAbout();
return; return;
} }
if (core.status.event.id=='help' && ok(keyCode)) {
core.ui.closePanel();
return;
}
if (core.status.event.id=='book') { if (core.status.event.id=='book') {
this.keyUpBook(keyCode); this.keyUpBook(keyCode);
return; return;
} }
if (core.status.event.id=='book-detail' && (keyCode==13 || keyCode==32 || keyCode==67)) { if (core.status.event.id=='book-detail' && ok(keyCode)) {
this.clickBookDetail(); this.clickBookDetail();
return; return;
} }
@ -251,8 +259,8 @@ actions.prototype.keyUp = function(keyCode, altKey, fromReplay) {
this.keyUpSL(keyCode); this.keyUpSL(keyCode);
return; return;
} }
if (core.status.event.id == 'keyBoard') { if (core.status.event.id == 'keyBoard' && ok(keyCode)) {
this.keyUpKeyBoard(keyCode); core.ui.closePanel();
return; return;
} }
if (core.status.event.id=='switchs') { if (core.status.event.id=='switchs') {
@ -555,6 +563,11 @@ actions.prototype.onclick = function (x, y, stepPostfix) {
this.clickAbout(x,y); this.clickAbout(x,y);
return; return;
} }
if (core.status.event.id == 'help') {
this.clickHelp(x,y);
return;
}
if (core.status.event.id == 'action') { if (core.status.event.id == 'action') {
this.clickAction(x,y); this.clickAction(x,y);
@ -2550,14 +2563,6 @@ actions.prototype.clickKeyBoard = function (x, y) {
core.ui.closePanel(); core.ui.closePanel();
} }
////// “虚拟键盘”界面时的点击操作 //////
actions.prototype.keyUpKeyBoard = function (keycode) {
if (keycode==27 || keycode==88 || keycode==13 || keycode==32 || keycode==67) {
core.ui.closePanel();
return;
}
}
////// 光标界面时的点击操作 ////// ////// 光标界面时的点击操作 //////
actions.prototype.clickCursor = function (x,y) { actions.prototype.clickCursor = function (x,y) {
@ -2616,6 +2621,10 @@ actions.prototype.clickAbout = function () {
core.restart(true); core.restart(true);
} }
////// “帮助”界面时的点击操作 //////
actions.prototype.clickHelp = function () {
core.ui.closePanel();
}
////// 绘图相关 ////// ////// 绘图相关 //////

View File

@ -1374,6 +1374,22 @@ control.prototype.setFg = function(color, time, callback) {
core.animateFrame.asyncId[changeAnimate] = true; core.animateFrame.asyncId[changeAnimate] = true;
} }
////// 画面闪烁 //////
control.prototype.screenFlash = function (color, time, times, callback) {
times = times || 1;
time = time/3;
var nowColor = core.clone(core.status.curtainColor);
core.setFg(color, time, function() {
core.setFg(nowColor, time * 2, function() {
if (times > 1)
core.screenFlash(color, time * 3, times - 1, callback);
else {
if (core.isset(callback)) callback();
}
});
});
}
////// 更新全地图显伤 ////// ////// 更新全地图显伤 //////
control.prototype.updateDamage = function (floorId, canvas) { control.prototype.updateDamage = function (floorId, canvas) {
floorId = floorId || core.status.floorId; floorId = floorId || core.status.floorId;

View File

@ -343,6 +343,12 @@ core.prototype.init = function (coreData, callback) {
} }
core.animateFrame.weather.fog.src = "project/images/fog.png"; core.animateFrame.weather.fog.src = "project/images/fog.png";
core.material.images.keyboard = new Image();
core.material.images.keyboard.onerror = function () {
core.material.images.keyboard = null;
}
core.material.images.keyboard.src = "project/images/keyboard.png";
core.bigmap.tempCanvas = document.createElement('canvas').getContext('2d'); core.bigmap.tempCanvas = document.createElement('canvas').getContext('2d');
core.loader.load(function () { core.loader.load(function () {
@ -923,7 +929,7 @@ core.prototype.setFg = function(color, time, callback) {
////// 画面闪烁 ////// ////// 画面闪烁 //////
core.prototype.screenFlash = function (color, time, times, callback) { core.prototype.screenFlash = function (color, time, times, callback) {
core.ui.screenFlash(color, time, times, callback); core.control.screenFlash(color, time, times, callback);
} }
////// 更新全地图显伤 ////// ////// 更新全地图显伤 //////

View File

@ -1485,7 +1485,7 @@ ui.prototype.drawReplay = function () {
ui.prototype.drawGameInfo = function () { ui.prototype.drawGameInfo = function () {
core.status.event.id = 'gameInfo'; core.status.event.id = 'gameInfo';
this.drawChoices(null, [ this.drawChoices(null, [
"数据统计", "查看工程", "查看评论", "操作帮助", "关于本塔","下载离线版本", "返回主菜单" "数据统计", "查看工程", "游戏主页", "操作帮助", "关于本塔","下载离线版本", "返回主菜单"
]); ]);
} }
@ -2805,46 +2805,39 @@ ui.prototype.drawPaint = function () {
////// 绘制帮助页面 ////// ////// 绘制帮助页面 //////
ui.prototype.drawHelp = function () { ui.prototype.drawHelp = function () {
core.drawText([ core.clearLastEvent();
"\t[键盘快捷键列表]"+ if (core.material.images.keyboard) {
"[CTRL] 跳过对话 [Z] 转向\n" + core.status.event.id = 'help';
"[X] 怪物手册 [G] 楼层传送\n" + core.lockControl();
"[A] 读取自动存档 [S/D] 存读档页面\n" + core.setAlpha('ui', 1);
"[K/V] 快捷商店 [ESC] 系统菜单\n" + core.drawImage('ui', core.material.images.keyboard, 0, 0);
"[T] 道具页面 [Q] 装备页面\n" + }
"[B] 数据统计 [H] 帮助页面\n" + else {
"[R] 回放录像 [E] 显示光标\n" + core.drawText([
"[SPACE] 轻按 [M] 绘图模式\n" + "\t[键盘快捷键列表]"+
"[N] 返回标题页面 [P] 查看评论区\n" + "[CTRL] 跳过对话 [Z] 转向\n" +
"[O] 查看工程 [F7] 打开debug穿墙模式\n" + "[X] 怪物手册 [G] 楼层传送\n" +
"[PgUp/PgDn] 浏览地图\n"+ "[A] 读取自动存档 [S/D] 存读档页面\n" +
"[1~4] 快捷使用破炸飞和其他道具\n"+ "[V] 快捷商店 [ESC] 系统菜单\n" +
"[Alt+0~9] 快捷换装", "[T] 道具页面 [Q] 装备页面\n" +
"\t[鼠标操作]"+ "[B] 数据统计 [H] 帮助页面\n" +
"点状态栏中图标: 进行对应的操作\n"+ "[R] 回放录像 [E] 显示光标\n" +
"点任意块: 寻路并移动\n"+ "[SPACE] 轻按 [M] 绘图模式\n" +
"点任意块并拖动: 指定寻路路线\n"+ "[N] 返回标题页面 [P] 游戏主页\n" +
"双击空地: 瞬间移动\n"+ "[O] 查看工程 [F7] 打开debug穿墙模式\n" +
"单击勇士: 转向\n"+ "[PgUp/PgDn] 浏览地图\n"+
"双击勇士: 轻按(仅在轻按开关打开时有效)\n"+ "[1~4] 快捷使用破炸飞和其他道具\n"+
"长按任意位置:跳过剧情对话或打开虚拟键盘" "[Alt+0~9] 快捷换装",
]); "\t[鼠标操作]"+
} "点状态栏中图标: 进行对应的操作\n"+
"点任意块: 寻路并移动\n"+
////// 画面闪烁 ////// "点任意块并拖动: 指定寻路路线\n"+
ui.prototype.screenFlash = function (color, time, times, callback) { "双击空地: 瞬间移动\n"+
times = times || 1; "单击勇士: 转向\n"+
time = time/3; "双击勇士: 轻按(仅在轻按开关打开时有效)\n"+
var nowColor = core.clone(core.status.curtainColor); "长按任意位置:跳过剧情对话或打开虚拟键盘"
core.setFg(color, time, function() { ]);
core.setFg(nowColor, time * 2, function() { }
if (times > 1)
core.screenFlash(color, time * 3, times - 1, callback);
else {
if (core.isset(callback)) callback();
}
});
});
} }
////// 动态canvas ////// ////// 动态canvas //////

View File

@ -703,7 +703,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
case 90: // Z转向 case 90: // Z转向
core.turnHero(); core.turnHero();
break; break;
case 75: case 86: // K/V打开快捷商店列表 case 86: // V打开快捷商店列表
core.openQuickShop(true); core.openQuickShop(true);
break; break;
case 32: // SPACE轻按 case 32: // SPACE轻按
@ -741,7 +741,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
case 79: // O查看工程 case 79: // O查看工程
window.open(core.platform.isPC?"editor.html":"editor-mobile.html", "_blank"); window.open(core.platform.isPC?"editor.html":"editor-mobile.html", "_blank");
break; break;
case 80: // P查看评论 case 80: // P游戏主页
window.open("/score.php?name="+core.firstData.name+"&num=10", "_blank"); window.open("/score.php?name="+core.firstData.name+"&num=10", "_blank");
break; break;
case 49: // 快捷键1: 破 case 49: // 快捷键1: 破

BIN
project/images/keyboard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -7,7 +7,7 @@
\r[red]可以动态调整剧情文本的颜色 \r[red]可以动态调整剧情文本的颜色
升级事件改用事件编辑器完成 升级事件改用事件编辑器完成
每层楼都增添该层的并行事件处理 每层楼都增添该层的并行事件处理
新增快捷键N返回标题P查看评论O打开工程 新增快捷键N返回标题P游戏主页O打开工程
新增事件:设置全局属性或全局数值 新增事件:设置全局属性或全局数值
新增事件:隐藏/显示状态栏 新增事件:隐藏/显示状态栏
道具可以设置是否在回放时绘制道具栏或直接使用 道具可以设置是否在回放时绘制道具栏或直接使用