Вставьте форму ответа комментария в страницу Используя JQuery

Смотрите, вы используете SkinnedMesh здесь, который является производным от класса Mesh . Сам Mesh имеет свойство Mesh.material .

Так что все, что вам нужно, чтобы изменить цвета, это собрать детей, чтобы вы могли получить к ним доступ по отдельности при помощи обработчика нажатия кнопки.

Вот ваш откорректированный код:

    var daeChildren = {}; // map dae child name => child node
    var loader = new THREE.ColladaLoader();

    loader.options.convertUpAxis = true;
    var url='obj/szkieletCube.dae';  

    loader.load( url, function ( collada ) {
        dae = collada.scene;

        ...

        dae.traverse( function ( child ) {  
            child.castShadow = true;
            child.receiveShadow = false;

            // 1. Collect DAE children here
            daeChildren[child.name] = child;
        } );            

        ...

    } );

И затем, нажав кнопку, вы можете изменить цвет материала:

function handleButtonClick() {
    // 2. drop texture if you need the mesh to be just colored
    daeChildren[child.name].material.map = null;

    // 3. set mesh color red
    daeChildren[child.name].material.color = new THREE.Color( 0xff0000 );

    // 4. tell threejs that material must be updated
    daeChildren[child.name].material.needsUpdate = true;
}

5
задан GEOCHET 23 March 2009 в 21:29
поделиться

3 ответа

Если ни одно из других предложений не работает, это мог бы быть Ваш селектор для ссылки, не работает правильно. В примере Вы, если Вы, кажется, ищете ссылку как это:

<a id='reply' href='#'>add comment</a>

Это корректно? Вы не упоминали, как Вы генерировали HTML, но я знаю с asp.net серверный идентификатор! = клиентский идентификатор и Вы должны были бы изменить Ваш селектор как так:

$('a[id$=reply]')

В любом случае вот полный пример с HTML, это хорошо работает для меня:

<html>
    <head>
        <script type="text/javascript" src='scripts\jquery-1.2.6.min.js'></script>
    </head>
    <body>
        <div style='height:400px'>
            Space to demonstrate that clicking the link does not scroll the page.
        </div>
        <div id='main'>
            <a href='#' id='clicky'>here</a>
        </div>
    </body>
    <script>
        $(function(){
            $('a#clicky').click(function(){
                $(this).after('Hello There')
                return false;
            });
        });
    </script>
</html>
2
ответ дан 14 December 2019 в 13:49
поделиться
$(document).ready(function(){
        $('a#reply').click(function() {
            $(this).after("the html blah");
            return false;
        });
});

Вам, возможно, понадобится, 'возвращают false'; там, чтобы мешать странице перезагрузить себя, когда Вы нажимаете на ссылку.

3
ответ дан 14 December 2019 в 13:49
поделиться

Для добавления к ответу rodbv, Вы будете добавлять текст "HTML и тому подобное" в ссылке, на которую нажали, потому что Вы используете append. Измените его на:

$(this).after("the html");

И это выпишет HTML после ссылки вместо этого.

1
ответ дан 14 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: