Как я представляю мозаики в XML?

Так, я пишу программу AS3, это размещает плитки для полов рядом. Я хочу, чтобы пользователь был, чтобы смочь создать их собственный пол, схематичный представленный различными прямоугольниками. Это будет перетаскивание. Они разметят свое схематическое (который состоит из другого размера прямоугольные мозаики), и цвета/шаблоны отбрасывания на них.

Это схематичное будет затем размещено рядом на 3D плоскости для представления то, на что был бы похож фактический пол.

У меня есть 3D работа части, работа перетаскивания, и т.д. Что я пропускаю, пол схематический материал. Я провел много времени, пытаясь выяснить лучшее решение, но я не могу ВПОЛНЕ добраться там.

Вот некоторые примеры (из ЦЕЛОГО набора возможных комбинаций) того, как схематика пола могла посмотреть:

alt text

alt text

alt text

alt text

Различные мозаики в схематическом являются сбрасываемыми регионами. Моя проблема: Как может представить их схематика в XML? Не волнуйтесь о мозаичном размещении, калибровке, и т.д. У меня уже есть это все вычисленное. Я просто буквально не знаю, как я могу представить мозаику, схематичную в XML, и потянуть его правильно с AS3. Какие-либо идеи?

1
задан lewiguez 28 June 2010 в 14:15
поделиться

4 ответа

Мне кажется, что ваши плитки действительно сводятся к макетам на сетке. Учитывая это, у меня был бы xml для плитки, состоящий из списка элементов, каждый элемент имел бы свойства для строки / столбца верхнего левого квадрата элемента, диапазона строк и столбцов для этого элемента, а также заполнить этот элемент. Примерно так:

<Tile>
    <Cell row="0" col="0" rowSpan="1" colSpan="4" fill="#a0a0a0"/>
    <Cell row="1" col="0" rowSpan="1" colSpan="4" fill="#b0b0b0"/>
    <Cell row="0" col="4" rowSpan="2" colSpan="2" fill="#c0c0c0"/>
    <Cell row="2" col="2" rowSpan="1" colSpan="4" fill="#a0a0a0"/>
    <Cell row="3" col="2" rowSpan="1" colSpan="4" fill="#b0b0b0"/>
    <Cell row="2" col="0" rowSpan="2" colSpan="2" fill="#c0c0c0"/>
</Tile> 

Выше приведен ваш первый пример (хотя я придумал цвета). Надеюсь, это поможет.

3
ответ дан 2 September 2019 в 23:26
поделиться

почему XML? почему бы просто не сериализовать его с помощью AMF3? или, если вам нужно что-то удобочитаемое, JSON подойдет. JSON имеет точно такую ​​же объектную семантику, что и ECMA-скрипт, являясь подмножеством ECMA-скрипта, в то время как XML не имеет, что делает работу с XML довольно раздражающей.

представление первой схемы в виде структуры объекта:

[
    {"x":0, "y":0, "width":100, "height":25, "pattern":0 },
    {"x":0, "y":25, "width":100, "height":25, "pattern":1 },
    {"x":100, "y":0, "width": 50, "height":50, "pattern":2 },
    {"x":50, "y":50, "width":100, "height":25, "pattern":0 },
    {"x":50, "y":75, "width":100, "height":25, "pattern":1 },   
    {"x":0, "y":50, "width": 50, "height":50, "pattern":2 }
]
//this is both valid JSON and ActionScript, although in ActionScript, you would
//typically use identifiers instead of strings for property names

Вы можете использовать as3corelib для сериализации .

привет
back2dos

-1
ответ дан 2 September 2019 в 23:26
поделиться

Отказ от ответственности: я не лучший человек в написании XML. Например, может вызывать затруднения, поскольку он усложняет схему xsd, а именно: если tile = no, он не должно иметь детей. Если tile = yes, то у него должны быть дочерние элементы. Также обратите внимание, что вам нужно переделать LightGrey . Также обратите внимание, что я не знаю, что является лучшим компромиссом между элементами и атрибутами. Также обратите внимание, что мне не нравится наличие , а также - возможность опечатки. Однако я не знаю лучшего способа, но хотел бы узнать, что это может быть. Также, возможно, этот формат слишком многословен. Кроме того, я не включил схему xsd, но вы можете начать работу с ней здесь: http://www.google.com/search?hl=en&q=xsd+schema+generator&aq=f&aqi=&aql=&oq= & gs_rfai =

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

<?xml version="1.0" encoding="utf-8"?>
<TileSchematics name="Blah" comment="This starts to describe second one.">
  <BoundingBox>
    <Width>8</Width>
    <Height>3</Height>
    <StackHorizontally>yes</StackHorizontally>
    <StackVertically>no</StackVertically>
  </BoundingBox>
  <Cells>
    <Cell x="0" y="0" tile="yes">
      <RgbColor>LightGrey</RgbColor>
      <Border>
        <Right>yes</Right>
        <Left>yes</Left>
        <Top>yes</Top>
        <Bottom>yes</Bottom>
      </Border>
    </Cell>
    ...
    <Cell x="0" y="1" tile="no"/>
    ...
  </Cells>
</TileSchematics>
0
ответ дан 2 September 2019 в 23:26
поделиться

Для простоты вы можете рассмотреть возможность использования значений x, y, ширины и высоты. Это формат, который используют flash.geom.Rectangle и flash.display.Graphics.drawRect () .

<tile x="20" y="20" width="400" height="200" pattern="1" />
<tile x="20" y="220" width="100" height="100" pattern="2" />
0
ответ дан 2 September 2019 в 23:26
поделиться
Другие вопросы по тегам:

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