0

私は JavaScript にかなり慣れていないので、ここでこのコードを再作成しようとしています。

効果: http://www.clicktorelease.com/code/css3dclouds/

チュートリアル: http://www.clicktorelease.com/tutorials/css3dclouds/#creating_a_world_and_a_camera

キャッチされていない SyntaxError: 予期しない識別子

何らかの理由で 25 行目に何か問題があり、それが何であるかわかりません。

    /*
        Clears the DOM of previous clouds bases 
        and generates a new set of cloud bases
    */
    function generate() {
        objects = [];
        layers = [];
        if ( world.hasChildNodes() ) {
            while ( world.childNodes.length >= 1 ) {
                world.removeChild( world.firstChild );       
            }
        }
        for( var j = 0; j <; 5; j++ ) {
            objects.push( createCloud() );
        }
    }

完全な JavaScript:

(function() {

window.onload = function() {


    /*
        objects is an array of cloud bases
        layers is an array of cloud layers
    */
    var objects = [],
        layers = [];

    /*
        Clears the DOM of previous clouds bases 
        and generates a new set of cloud bases
    */
    function generate() {
        objects = [];
        layers = [];
        if ( world.hasChildNodes() ) {
            while ( world.childNodes.length >= 1 ) {
                world.removeChild( world.firstChild );       
            }
        }
        for( var j = 0; j <; 5; j++ ) {
            objects.push( createCloud() );
        }
    }

    /*
        Creates a single cloud base and adds several cloud layers.
        Each cloud layer has random position ( x, y, z ), rotation (a)
        and rotation speed (s). layers[] keeps track of those divs.
    */
    function createCloud() {

        var div = document.createElement( 'div'  );
        div.className = 'cloudBase';
        var t = 'translateX( ' + random_x + 'px ) \
            translateY( ' + random_y + 'px ) \
            translateZ( ' + random_z + 'px )';
        div.style.transform = t;
        world.appendChild( div );

        for( var j = 0; j < 5 + Math.round( Math.random() * 10 ); j++ ) {
            var cloud = document.createElement( 'div' );
            cloud.className = 'cloudLayer';

            cloud.data = { 
                x: random_x,
                y: random_y,
                z: random_z,
                a: random_a,
                s: random_s
            };
            var t = 'translateX( ' + random_x + 'px ) \
                translateY( ' + random_y + 'px ) \
                translateZ( ' + random_z + 'px ) \
                rotateZ( ' + random_a + 'deg ) \
                scale( ' + random_s + ' )';
            cloud.style.transform = t;

            div.appendChild( cloud );
            layers.push( cloud );
        }

        return div;
    }

    /*
        Iterate layers[], update the rotation and apply the
        inverse transformation currently applied to the world.
        Notice the order in which rotations are applied.
    */
    function update (){

        for( var j = 0; j < layers.length; j++ ) {
            var layer = layers[ j ];
            layer.data.a += layer.data.speed;
            var t = 'translateX( ' + layer.data.x + 'px ) \
                translateY( ' + layer.data.y + 'px ) \
                translateZ( ' + layer.data.z + 'px ) \
                rotateY( ' + ( - worldYAngle ) + 'deg ) \
                rotateX( ' + ( - worldXAngle ) + 'deg ) \
                scale( ' + layer.data.s + ')';
            layer.style.transform = t;
        }

        requestAnimationFrame( update );

    }


}; //-window.onload

}());
4

1 に答える 1

5

ループに値がありません (つまり、余分な値があります;):

for (var j = 0; j < ; 5; j++)

おそらくあるはずです

for (var j = 0; j < 5; j++)
于 2012-09-24T15:39:08.947 に答える