проблемы с доступом к объектам внутри 3d куба - PullRequest
0 голосов
/ 06 апреля 2011

моя ссылка: http://dl.dropbox.com/u/7727742/playlistsite6/index5.html

У меня есть 3d-куб, использующий вариацию демо zachstronaut. (ссылка: http://www.zachstronaut.com/lab/galaxy-box/). Он использует javascript, translate3d, scale3d и т.д ...

Я пытался присвоить разные значения z-index в файле css, но безуспешно. Я могу получить доступ к объектам вне куба (вы можете видеть это с помощью эффекта наведения), но не к объектам внутри куба. Я догадываюсь, что это потому, что он не выполняет функции типа z-sort, как pre3d.js. Мне было интересно, если кто-нибудь может предложить некоторое понимание того, где я должен искать решение.

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

Спасибо!

EDIT:

Проверено только в Safari и Chrome Dev

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Webkit игнорирует z-индексы для всего, что определено translate3d, как и должно быть логически.z-index предназначен для двухмерного мира, это все равно, что взять кучу бумаги и сказать «это сверху» - у вас все еще плоская поверхность.К сожалению, если вы хотите иметь возможность выбрать одну из «звездочек» внутри своего блока, вам почти не повезло, поскольку вы используете узлы HTML.

Обычный способ сделать этоиспользуя карту кликов - в основном каждый объект визуализируется дважды.Один раз в обычном режиме и один раз в одном цвете без затенения и т. Д. 2-й рендеринг никогда не показывается и просто используется, чтобы сказать, на что нажал пользователь.Вы получаете цвет, где они щелкнули, и этот цвет отображается на конкретный объект.Если бы вы использовали canvas, вы бы сделали это таким образом и просто изменили порядок рендеринга на втором рендере.

Поскольку вы используете узлы HTML, вы не можете этого сделать.У вас есть несколько вариантов:

  • Вы можете рассчитать, какая звезда находится под мышью при перемещении мыши, основываясь на повороте области просмотра и положении звезды по x / y / z
  • youМожно попробовать описанный выше метод, наложив идентичный рендеринг без куба и где звезды имеют непрозрачность 0%.Каждая звезда в вашем новом рендеринге будет отображаться на звезду в вашем существующем, и вы сможете легко обнаружить курсор мыши.

Опубликовать результаты!:)

0 голосов
/ 07 мая 2011

Прежде всего, я рад, что вы нашли мое демо интересным!

Вам не повезет, если вы попытаетесь навести курсор мыши или захватить событие щелчка на объектах внутри куба 3D CSS3 по той же самой причине, по которой вам не повезет, если вы захватите курсор мыши или события щелчка на объекте. div под другим div ... в HTML все события DOM идут на самый верхний узел DOM. Если один div перекрывает другой div, вы не можете щелкнуть тот, который находится внизу. Все внутри трехмерного куба находится "под" другим узлом DOM.

Все усложняется тем, что вы берете объекты в трехмерном пространстве и просите пользователя взаимодействовать с ними на 2D-плоскости (в окне браузера) с помощью устройства ввода 2D (мыши).

Вы можете скрыть грани куба, чтобы они не блокировали клики пользователя. Вы могли бы сделать что-то вроде предложенного cwolves.

Извините, я не мог больше помочь ... HTML-код здесь нас немного подводит. Добро пожаловать в кровоточащий край!

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