Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在开始之前加载HTML5画布游戏?_Javascript_Html_Cordova_Canvas_Load - Fatal编程技术网

Javascript 如何在开始之前加载HTML5画布游戏?

Javascript 如何在开始之前加载HTML5画布游戏?,javascript,html,cordova,canvas,load,Javascript,Html,Cordova,Canvas,Load,我用HTML5画布Cordova制作了一个游戏。它工作得很好,但是像“Jump”这样的实例在第一次时会导致轻微的延迟,然后在第二次时工作得很好。我认为这与新的动画图像“随动加载”有关。有没有办法在游戏开始前从一开始就加载所有内容(例如加载屏幕)? 提前谢谢你 有一些第三方工具可以让你做到这一点,我在过去使用过,并对此相当满意。它有一个名为load的调用,允许您拉入资产,然后提供一个回调,在加载所有资产时调用该回调 因此,一个简单的案例可能如下所示: Modernizr.load([ {

我用HTML5画布Cordova制作了一个游戏。它工作得很好,但是像“Jump”这样的实例在第一次时会导致轻微的延迟,然后在第二次时工作得很好。我认为这与新的动画图像“随动加载”有关。有没有办法在游戏开始前从一开始就加载所有内容(例如加载屏幕)?
提前谢谢你

有一些第三方工具可以让你做到这一点,我在过去使用过,并对此相当满意。它有一个名为
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';
图像[图像编号]=图像;

}
您可以将资产放入数组,这样它将在页面之前加载。您可以将资产放入数组,这样它将在页面之前加载