Add keyboard
This commit is contained in:
parent
db399dd39d
commit
2a63fea57e
@ -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] 道具可以设置是否在回放时绘制道具栏或直接使用
|
||||||
|
|||||||
@ -473,7 +473,7 @@ HTML5魔塔一大亮点就是存在录像系统,可以很方便进行录像回
|
|||||||
- **[G]** 打开/关闭楼层传送器
|
- **[G]** 打开/关闭楼层传送器
|
||||||
- **[A]** 读取自动存档
|
- **[A]** 读取自动存档
|
||||||
- **[S/D]** 打开/关闭存/读档页面
|
- **[S/D]** 打开/关闭存/读档页面
|
||||||
- **[K/V]** 打开/关闭快捷商店选择列表
|
- **[V]** 打开/关闭快捷商店选择列表
|
||||||
- **[T]** 打开/关闭工具栏
|
- **[T]** 打开/关闭工具栏
|
||||||
- **[Q]** 打开/关闭装备栏
|
- **[Q]** 打开/关闭装备栏
|
||||||
- **[ESC]** 打开/关闭系统菜单
|
- **[ESC]** 打开/关闭系统菜单
|
||||||
|
|||||||
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
////// 绘图相关 //////
|
////// 绘图相关 //////
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 更新全地图显伤 //////
|
////// 更新全地图显伤 //////
|
||||||
|
|||||||
75
libs/ui.js
75
libs/ui.js
@ -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 //////
|
||||||
|
|||||||
@ -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
BIN
project/images/keyboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
Loading…
Reference in New Issue
Block a user