Проект Three.js на iphone - проблема с событиями (выберите и перетащите объект) - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть строительный проект с three.js ... canvas, где вы также можете перетаскивать объекты и играть с видом с камеры ... есть известный пример - "Draggable Cubes", ну мой проект очень похож.

В моем проекте есть 3 основных события: mouseup / mousedown / mousemove ...

Ну, все было хорошо .... но сейчас я пытаюсь запустить этот код на iphone, меняямои события с touchstart / touchmove / touchend ...

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

Я думаю, проблема в этой функции:

function onDocumentMouseDown( event ) {

            event.preventDefault();

            var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
            projector.unprojectVector( vector, camera );

            var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );

            var intersects = ray.intersectObjects( objects );

            if ( intersects.length > 0 ) {

                SELECTED = intersects[ 0 ].object;

                var intersects = ray.intersectObject( plane );
                offset.copy( intersects[ 0 ].point ).subSelf( plane.position );

            }
}

У кого-нибудь есть идеи, в чем проблема ???

1 Ответ

7 голосов
/ 25 октября 2012

в этой строке:

var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );

Вы используете объект мыши Vector2, но не инициализируете его.

Как-то так должно работать:

mouse.x = +(event.targetTouches[0].pageX / window.innerwidth) * 2 +-1;

mouse.y = -(event.targetTouches[0].pageY / window.innerHeight) * 2 + 1;
...