Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
jQuery$(文档)。准备好了一半(我想)_Jquery_Three.js_Document Ready - Fatal编程技术网

jQuery$(文档)。准备好了一半(我想)

jQuery$(文档)。准备好了一半(我想),jquery,three.js,document-ready,Jquery,Three.js,Document Ready,我正在使用这个代码 jQuery(document).ready(function () { console.log('loaded'); show(); }); 因此,当我的页面上的所有内容都加载时,一个函数将在启动项目时运行。然而,我在Three.JS中使用它,我在其中加载的模型只有几mb 脚本在几毫秒后返回'loaded',但是模型没有完全加载。此外,Chrome控制台告诉我,这些模型需要几秒钟才能完全加载:/ 这是个错误的方法吗?对不起,我对它很陌生 文档已加载 th

我正在使用这个代码

 jQuery(document).ready(function () {
    console.log('loaded');
    show();
});
因此,当我的页面上的所有内容都加载时,一个函数将在启动项目时运行。然而,我在Three.JS中使用它,我在其中加载的模型只有几mb

脚本在几毫秒后返回'loaded',但是模型没有完全加载。此外,Chrome控制台告诉我,这些模型需要几秒钟才能完全加载:/


这是个错误的方法吗?对不起,我对它很陌生

文档已加载

three.js生成的模型不是初始文档的一部分。它们在生成时由ThreeJS插入,如项目页面所示:

注意这一行:

document.body.appendChild( renderer.domElement );

文档已加载

three.js生成的模型不是初始文档的一部分。它们在生成时由ThreeJS插入,如项目页面所示:

注意这一行:

document.body.appendChild( renderer.domElement );

jQuery就绪事件将在加载DOM后触发。窗口onload事件将在加载所有其他内容(如图像等)之后出现。

jQuery ready事件将在加载DOM后触发。在加载所有其他内容(如图像等)之后,“窗口加载”事件将在稍后出现。

此页面:等待直到加载两个纹理,然后显示“渲染”按钮

如果您认为该示例页面的源代码可能会对您有所帮助

var loadCount = 0;

function loadTexture(url) {
    var image = new Image();
    var texture = new THREE.Texture(image);
    image.onload = function() {
        texture.needsUpdate = true;
        console.log("texture " + url + " loaded");
        loadCount++;
        // Enable Render button when both images loaded
        if (loadCount == 2)
            document.getElementById("renderButton").disabled = false;
    };
    image.src = url;
    return texture;
}
此页面:等待直到加载两个纹理,然后显示“渲染”按钮

如果您认为该示例页面的源代码可能会对您有所帮助

var loadCount = 0;

function loadTexture(url) {
    var image = new Image();
    var texture = new THREE.Texture(image);
    image.onload = function() {
        texture.needsUpdate = true;
        console.log("texture " + url + " loaded");
        loadCount++;
        // Enable Render button when both images loaded
        if (loadCount == 2)
            document.getElementById("renderButton").disabled = false;
    };
    image.src = url;
    return texture;
}

Thdk在上面给出的loadTexture函数与Three.js中包含的中给出的函数基本相同

如果查看THREE.ImageUtils.loadTexture函数的源代码,您可以看到它与上面的函数相同,只是有一些小的更改。我们有额外的纹理映射参数和回调。回调被放置在Image objects onload事件中。这意味着我们可以利用它来推迟创建对象,直到我们有了它们的纹理并确保所有的 在我们设置动画之前加载它们

loadTexture: function ( path, mapping, callback ) {

        var image = new Image(), texture = new THREE.Texture( image, mapping );

        image.onload = function () { texture.needsUpdate = true; if ( callback ) callback( this ); };
        image.crossOrigin = this.crossOrigin;
        image.src = path;

        return texture;

    },
使用回调,您可以通过以下方式利用它来实现您想要的:

THREE.ImageUtils.loadTexture(path1, null, function () {
THREE.ImageUtils.loadTexture(path2, null, function () {
THREE.ImageUtils.loadTexture(path3, null, function () { renderingEnabled = true; }) }) });

然后用
if(renderingEnabled)
环绕对动画逻辑和渲染调用的调用。或者,如果一切设置正确,您也可以从上一次回调调用动画循环。

Thdk给出的loadTexture函数基本上与Three.js中包含的中给出的函数相同

如果查看THREE.ImageUtils.loadTexture函数的源代码,您可以看到它与上面的函数相同,只是有一些小的更改。我们有额外的纹理映射参数和回调。回调被放置在Image objects onload事件中。这意味着我们可以利用它来推迟创建对象,直到我们有了它们的纹理并确保所有的 在我们设置动画之前加载它们

loadTexture: function ( path, mapping, callback ) {

        var image = new Image(), texture = new THREE.Texture( image, mapping );

        image.onload = function () { texture.needsUpdate = true; if ( callback ) callback( this ); };
        image.crossOrigin = this.crossOrigin;
        image.src = path;

        return texture;

    },
使用回调,您可以通过以下方式利用它来实现您想要的:

THREE.ImageUtils.loadTexture(path1, null, function () {
THREE.ImageUtils.loadTexture(path2, null, function () {
THREE.ImageUtils.loadTexture(path3, null, function () { renderingEnabled = true; }) }) });

然后用
if(renderingEnabled)
环绕对动画逻辑和渲染调用的调用。或者,如果一切设置正确,您可以从上一次回调调用动画循环。

我对
three.js
知之甚少,但这并不是加载DOM后向控制台写入内容,然后调用另一个方法的“错误”方法。您的
three.js
代码中是否有错误?jQuery或three.js中都没有错误:/It正在启动代码,只是在我认为它不应该的时候,我对
three.js
不太了解,但这并不是加载DOM后向控制台写入内容,然后调用另一个方法的“错误”方式。你的
three.js
代码中有错误吗?jQuery或three.js中都没有错误:/It正在启动代码,只是不是在我认为应该的时候。你认为是three.js模型,它们是通过JSON加载到文档中的,你知道jQuery ready是否支持这一点吗?你认为是three.js模型吗,它们是通过JSON加载到文档中的,您知道jQueryReady是否支持这个功能吗?啊,真的吗?我明白了,这很奇怪,因为当它“加载”jQuery
ready
时,模型不会出现在屏幕上,因为ThreeJS本身生成DOM节点,所以jQuery
ready
对ThreeJS不起作用。ready事件只针对Web服务器返回的静态HTML。啊,真的吗?我明白了,这很奇怪,因为当它“加载”jQuery
ready
时,模型不会出现在屏幕上,因为ThreeJS本身生成DOM节点,所以jQuery
ready
对ThreeJS不起作用。ready事件仅适用于Web服务器返回的静态HTML。