Javascript 如何在开始之前加载HTML5画布游戏?
我用HTML5画布Cordova制作了一个游戏。它工作得很好,但是像“Jump”这样的实例在第一次时会导致轻微的延迟,然后在第二次时工作得很好。我认为这与新的动画图像“随动加载”有关。有没有办法在游戏开始前从一开始就加载所有内容(例如加载屏幕)?Javascript 如何在开始之前加载HTML5画布游戏?,javascript,html,cordova,canvas,load,Javascript,Html,Cordova,Canvas,Load,我用HTML5画布Cordova制作了一个游戏。它工作得很好,但是像“Jump”这样的实例在第一次时会导致轻微的延迟,然后在第二次时工作得很好。我认为这与新的动画图像“随动加载”有关。有没有办法在游戏开始前从一开始就加载所有内容(例如加载屏幕)? 提前谢谢你 有一些第三方工具可以让你做到这一点,我在过去使用过,并对此相当满意。它有一个名为load的调用,允许您拉入资产,然后提供一个回调,在加载所有资产时调用该回调 因此,一个简单的案例可能如下所示: Modernizr.load([ {
提前谢谢你 有一些第三方工具可以让你做到这一点,我在过去使用过,并对此相当满意。它有一个名为
load
的调用,允许您拉入资产,然后提供一个回调,在加载所有资产时调用该回调
因此,一个简单的案例可能如下所示:
Modernizr.load([
{
load: [ 'preload!scripts/myscript1.js', 'images!image/myimage.jpeg' ],
complete: function () {
console.log('Everything is loaded!');
initMyThing();
}
}
]);
您可以立即运行加载屏幕脚本(加载起来很简单),然后在这里的
complete
功能中销毁加载屏幕并启动游戏。有第三方工具允许您执行此操作,我过去使用过,对此相当满意。它有一个名为load
的调用,允许您拉入资产,然后提供一个回调,在加载所有资产时调用该回调
因此,一个简单的案例可能如下所示:
Modernizr.load([
{
load: [ 'preload!scripts/myscript1.js', 'images!image/myimage.jpeg' ],
complete: function () {
console.log('Everything is loaded!');
initMyThing();
}
}
]);
您可以立即运行加载屏幕脚本(加载起来很简单),然后在这里的
complete
函数中销毁加载屏幕并启动游戏。我不知道Cordova,但几个月前我做了一个(但使用DOM,而不是Canvas),我使用AJAX调用加载我想要的所有文件
1) 服务器端:
创建包含所需文件的所有URL的JSON列表的脚本
所以像['/assets/img1.png','/assets/sound.mp3',…]这样的列表
2) a)客户端:
AJAX调用服务器脚本
2) (b)
收到列表后,对列表的每个URL发出GET请求
您可以通过存储列表长度并在每次收到文件时递增来跟踪加载,当currentFileCount==totalFileCount
时,加载完成,您可以初始化游戏
由于GET获取的文件由浏览器缓存,因此下次您要加载游戏时,浏览器将首先检查缓存中是否存在该文件,如果不存在,则会发出请求
(该文件对于StackOverflow来说有点长,但您可以检查我创建的文件,该文件还跟踪每个文件的进度,法语注释,抱歉)
我希望这会对您有所帮助。我不知道Cordova,但几个月前我做了一个(但使用DOM,而不是Canvas),我使用AJAX调用加载我想要的所有文件 1) 服务器端:
创建包含所需文件的所有URL的JSON列表的脚本
所以像['/assets/img1.png','/assets/sound.mp3',…]这样的列表
2) a)客户端:
AJAX调用服务器脚本
2) (b)
收到列表后,对列表的每个URL发出GET请求
您可以通过存储列表长度并在每次收到文件时递增来跟踪加载,当currentFileCount==totalFileCount
时,加载完成,您可以初始化游戏
由于GET获取的文件由浏览器缓存,因此下次您要加载游戏时,浏览器将首先检查缓存中是否存在该文件,如果不存在,则会发出请求
(该文件对于StackOverflow来说有点长,但您可以检查我创建的文件,该文件还跟踪每个文件的进度,法语注释,抱歉)
我希望这将对您有所帮助。使用以下代码:
function init()
{
// load stuff here - page has loaded
// loop through images using an array and don't call the rest of the functions until they have all loaded
}
// browsers with modern versions
if (window.addEventListener)
{
window.addEventListener("load", init);
}
// other browsers / earlier versions like Internet Explorer pre- 11
else if (window.attachEvent)
{
window.attachEvent("load", init);
}
需要注意的是,您可以执行window.onload或使用插件,但要使用以下代码:
function init()
{
// load stuff here - page has loaded
// loop through images using an array and don't call the rest of the functions until they have all loaded
}
// browsers with modern versions
if (window.addEventListener)
{
window.addEventListener("load", init);
}
// other browsers / earlier versions like Internet Explorer pre- 11
else if (window.attachEvent)
{
window.attachEvent("load", init);
}
需要注意的是,您可以执行window.onload或使用插件,但是我想在开始游戏之前加载我的图像,这是我的代码
var-images=[];
对于(让imageNumber=0;imageNumber<(行数*列数)/2;imageNumber++){
图像=新图像();
image.src='./assets/'+imageNumber+'.png';
图像[图像编号]=图像;
}
我想在开始游戏之前加载我的图像,这是我的代码
var-images=[];
对于(让imageNumber=0;imageNumber<(行数*列数)/2;imageNumber++){
图像=新图像();
image.src='./assets/'+imageNumber+'.png';
图像[图像编号]=图像;
}
您可以将资产放入数组,这样它将在页面之前加载。您可以将资产放入数组,这样它将在页面之前加载