这是cocos官网的打飞机游戏演示
http://cocos2d-x.org/docs/manual/framework/html5/zh
我用的是谷歌浏览器,只要切换一个页面,或最小化,这个游戏就会暂停
做的是网游,不允许暂停,请问如何实现?
现在游戏都做好了,卡在这个环节,急死了,请大家帮忙
5楼的回复是最好的方法,大家可以参考
这是cocos官网的打飞机游戏演示
http://cocos2d-x.org/docs/manual/framework/html5/zh
我用的是谷歌浏览器,只要切换一个页面,或最小化,这个游戏就会暂停
做的是网游,不允许暂停,请问如何实现?
5楼的回复是最好的方法,大家可以参考
总不能说cocos2d-html5不能做网游把,请前辈告诉我方法
这个本来就是这样的啊,和coco没关系了
我只知道flash网页游戏有办法,js也许是浏览器故意做的
楼主是如何解决的呢
有很多办法可以让代码在chrome的background模式运行的,可是我觉得最好的办法还是失焦的时候保存下状态,重新获得焦点的时候,计算下时间,把中间后台时间的所有的数据都计算完毕。
至于如何拿到失焦和获得焦点的事件,eventmanager是不二之选。
感谢楼上的回复!方法棒极了
不过在cocos里还是解决不了,因为cocos里有大量定时器,总不能全改成webworker把。这个功能还是算了
抱歉,回复迟了。切换标签页游戏暂停,是浏览器的问题导致的。这种切换回来的恢复操作可以获取页面的打开的事件,核对服务器的状态,更新到页面上,
另外,ios的情况也是这样,切换到后台,一切就停止了。切换回来,又继续。
其实没必要那么纠结,参考winJS软件或者IOS软件在后台恢复到前台的逻辑,它也是最小化的时候保存当前状态,恢复的时候,取出数据并且和服务器核对(或者本地核对时间等)然后检测当前场景,还原某些sprite,和部分的action,有些特效运行到一半的不好还原其实都可以直接忽略了,,,看到很多程序都是这样的。
cocos和浏览器关系就和winJS和windows一样,windows要关闭并且释放winJS的内存,程序一点办法都没有。只能是等重新触发的时候,吧东西重新加载进内存。
在客户端不能做到最小化也运行吗?只能在恢复页面的时候同步服务器的状态做更新??
但假如时多人游戏 就有问题了
//bgWorker.js
function timedCount()
{
postMessage(1);
setTimeout(“timedCount()”, 1000 / 60);
}
timedCount();
//要后台跑的scene加上这个
onEnterBackground : function()
{
console.log(“游戏进入后台”);
if(!cc.sys.isNative)
{
this.bgWorker = new Worker(“res/bgWorker.js”);
this.bgWorker.onmessage = function(evt)
{
cc.director.mainLoop();
};
}else {
}
},
onEnterForeground : function()
{
console.log("游戏回到前台");
if(!cc.sys.isNative)
{
if(this.bgWorker != null)
{
this.bgWorker.terminate();
this.bgWorker = null;
}
}else{
}
}
不用每个计时器都用一个worker,一个worker在进后台的时候按帧率,每隔一段时间调一次cc.director.mainLoop()就行了
cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, this.onEnterBackground.bind(this));
cc.eventManager.addCustomListener(cc.game.EVENT_SHOW, this.onEnterForeground.bind(this));
真的可以吗? 试试!谢谢!
是什么? 你的worker.JS …只有 timedCount 方法啊。。。。。可以给个完整的代码麽谢谢。。
还有postMessage(1); 是哪里来的方法。。。找不到
你这个方法 为什么 我切换2次后 就会很卡 然后卡死了。。。
siuwaitat< 1分钟
你这个方法 为什么 我切换2次后 就会很卡 然后卡死了。。。
你好 ,请教下 worker.js放哪个路径下才能加载到,我放在resources下好像不行
好奇怪 , worker 线程中setTimerout 好慢,设置时间也不管用