2010-02-14 8 views
8

Я пытаюсь создать веб-приложение/игру, которая использует боковое «изометрическое» представление и прозрачные плитки. Я могу отобразить их в порядке (но не отлично), используя формулу PHP, которая просто устанавливает каждый div (каждая плитка) как позиция: абсолютная и устанавливает верхний и левый параметры. Проблема заключается в том, как уловить клики на плитке и позволить плиткам с прозрачными битами перейти на плитку ниже.Изометрическая сетка HTML/JS/CSS с полупрозрачными прокручиваемыми фрагментами

Пример моей проблемы в http://stuff.adammw.homeip.net/other/fv/farmville_2.html

ответ

4

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

Для изометрического отображения положения для плитки это было бы легко, но это заняло бы положение точки как место «на земле»; это не позволит вам использовать данные маски изображения для объектов с проверкой результатов, таких как деревья, которые визуализируются перед землей. (Вы хотите, чтобы сделать это в любом случае настоящее время некоторые дерева полностью затенить заземляющие плитки под ними?).

Если вам действительно нужно ударить тест против масок изображений, вы можете:

а. напишите сценарий, чтобы извлечь данные маски из изображения и включить его в исходный код JavaScript в виде закодированных битовых масок. Я сделал это для обнаружения столкновений в играх JavaScript, но это не очень весело, так как это может занять много места, и вам придется реэкспортировать данные при обновлении графики.

b. извлечение данных изображения для тестирования с использованием <canvas> и getImageData. В этот момент вы можете подумать об использовании холста для рендеринга, учитывая, что вы уже потеряли пользователей IE.

+1

было бы, вероятно, будет хорошо "потерять" эти досадные IE пользователи imho =) – Chii

+0

Пойдем с холстом, немного сложно найти хороший способ сделать это, но, к счастью, я нашел что-то, что точно at - http://philip.html5.org/demos/canvas/spritepick/example.html Единственная проблема с этим методом заключается в том, что он очень интенсивно работает в javascript/processor, и я не уверен, будет ли он работать для оригинальная цель, которая должна была обеспечить совместимость с веб-браузером iPhone. –

1

Поскольку это игра на основе плитки, возможно, вам нужно просто определить, с какой плитой взаимодействует пользователь, используя простую формулу. Используйте javascript для определения координат щелчка или другого действия. затем выполните некоторую арифметику, чтобы выяснить, на какой плите действовать. Имеет ли это смысл?

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

+0

Делает большой смысл – Jonno

4

Вам нужно использовать преобразования css3 или преобразование матрицы в IE.

Синтаксис выглядит следующим образом:

-webkit-transform: skew(0deg, -30deg) scale(1, 1.16); 
-moz-transform: skew(0deg, -30deg) scale(1, 1.16); 

Пара хороших примеров:

http://www.fofronline.com/experiments/cube/index.html

http://www.useragentman.com/blog/2010/03/09/cross-browser-css-transforms-even-in-ie/

 Смежные вопросы

  • Нет связанных вопросов^_^