Iphone - события Javascript ... для three.js - PullRequest
2 голосов
/ 29 ноября 2011

Я работаю над этим проектом ... который предполагает работать в браузере и в iphone, а также ... Так что я сейчас занимаюсь проблемой событий ... Какие события javascript можно использовать для iphone ???

1 Ответ

4 голосов
/ 29 ноября 2011

Это зависит от того, какая функциональность вам нужна, но попробуйте this на вашем телефоне. Это должно сделать некоторую структуру куба, похожую на эту: кубики three.js http://lifesine.eu/labs/media/images/vector.gif

Должно быть возможным касание и перетаскивание. Это основано на старом образце перетаскивания куба, который идет с three.js, и вот используемые события:

document.addEventListener( 'mousedown', onDocumentMouseDown, false );
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );

А вот и слушатели:

function onDocumentMouseDown( event ) {

                event.preventDefault();

                document.addEventListener( 'mousemove', onDocumentMouseMove, false );
                document.addEventListener( 'mouseup', onDocumentMouseUp, false );
                document.addEventListener( 'mouseout', onDocumentMouseOut, false );

                mouseXOnMouseDown = event.clientX - windowHalfX;
                targetRotationOnMouseDown = targetRotation;
            }

            function onDocumentMouseMove( event ) {

                mouseX = event.clientX - windowHalfX;
                mouseY = event.clientY - windowHalfY;

                targetRotation = targetRotationOnMouseDown + ( mouseX - mouseXOnMouseDown ) * 0.02;
            }

            function onDocumentMouseUp( event ) {

                document.removeEventListener( 'mousemove', onDocumentMouseMove, false );
                document.removeEventListener( 'mouseup', onDocumentMouseUp, false );
                document.removeEventListener( 'mouseout', onDocumentMouseOut, false );
            }

            function onDocumentMouseOut( event ) {

                document.removeEventListener( 'mousemove', onDocumentMouseMove, false );
                document.removeEventListener( 'mouseup', onDocumentMouseUp, false );
                document.removeEventListener( 'mouseout', onDocumentMouseOut, false );
            }

            function onDocumentTouchStart( event ) {

                if ( event.touches.length == 1 ) {

                    event.preventDefault();

                    mouseXOnMouseDown = event.touches[ 0 ].pageX - windowHalfX;
                    targetRotationOnMouseDown = targetRotation;

                }
            }

            function onDocumentTouchMove( event ) {

                if ( event.touches.length == 1 ) {

                    event.preventDefault();

                    mouseX = event.touches[ 0 ].pageX - windowHalfX;
                    targetRotation = targetRotationOnMouseDown + ( mouseX - mouseXOnMouseDown ) * 0.05;

                }
            }

Обратите внимание, что используется несколько переменных, которые могут быть неочевидны, например targetRotation, targetRotationOnMouseDown и т. Д. Не стесняйтесь использовать исходный код по этой ссылке, но помните, что я написал этот код в прошлом году, поэтому некоторые из код three.js может немного отличаться (возможно, материалы и тому подобное), но часть событий все равно должна работать, если вы вставите ее в свой код.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...