我正在使用 开发基于网络的游戏processing.js
,我的问题与用于管理浏览器窗口的纯 JavaScript 代码有关。
游戏是一个迷宫般的小浏览器窗口(200px*200px),每个边框可以是一面墙,也可以是通往另一个窗口的通道。我的问题是,如果我关闭来自的窗口,然后我尝试取回它不会重新打开,即使我使用以前使用过的相同功能。
我在这里运行了一个 git 存储库:GitHub - TheMidst。
如果要重现“错误”:
从 github 拉取代码:
- 启动
index.html
(在你最喜欢的浏览器中,我使用 chrome)。 - 不要等待并单击
start button -> level0.html
打开。 - 通过单击打开的右侧转到右侧
canvas->
level1.html
。 - 回到你的
steps -> level0.html
仍然打开。 - 回到右边
level1.html
,它不会重新生成... =>这是我的问题。
/js -> 包含一个windowScripts.js,它通过函数处理窗口的打开和关闭,这是我的窗口管理器的核心,它有问题。
/levels -> 包含每个级别作为 html 页面。
/pd -> 包含纯数据补丁的游戏声音(是的!)
游戏还远未完成,所以一切都远非完美。任何帮助将不胜感激。
干杯。
编辑添加一些代码
打开我使用的弹出窗口:popUp(1); //1 是我要打开的关卡的编号。
这与这个js函数有关
函数弹出(winNum){
var windowFeatures = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,left="+(winVars[winNum][0])+",top="+(winVars[winNum][1])+",width="+winVars[winNum][2]+",height="+winVars[winNum][3];
windows[winNum] = window.open( "level"+winNum+".html", "myWindow"+winNum, windowFeatures);
windows[winNum].moveTo(winVars[winNum][0],winVars[winNum][1]);
}
我所有的 Windows 属性都存储在数组中
关闭我使用的窗口:closeWindows(0); // 0 是我要关闭的窗口的编号。
函数 closeWindows(winNum2){
setTimeout (widows[winNum2] = window.close(),50); }
实际上我在父窗口等之间有点困惑......
使用“window.opener.popUp(myPopup)”确实解决了问题
github repo 已经做了一些改动,如果你有同样的问题,你仍然可以参考 github repo。
干杯