Так, я пишу программу AS3, это размещает плитки для полов рядом. Я хочу, чтобы пользователь был, чтобы смочь создать их собственный пол, схематичный представленный различными прямоугольниками. Это будет перетаскивание. Они разметят свое схематическое (который состоит из другого размера прямоугольные мозаики), и цвета/шаблоны отбрасывания на них.
Это схематичное будет затем размещено рядом на 3D плоскости для представления то, на что был бы похож фактический пол.
У меня есть 3D работа части, работа перетаскивания, и т.д. Что я пропускаю, пол схематический материал. Я провел много времени, пытаясь выяснить лучшее решение, но я не могу ВПОЛНЕ добраться там.
Вот некоторые примеры (из ЦЕЛОГО набора возможных комбинаций) того, как схематика пола могла посмотреть:
Различные мозаики в схематическом являются сбрасываемыми регионами. Моя проблема: Как может представить их схематика в XML? Не волнуйтесь о мозаичном размещении, калибровке, и т.д. У меня уже есть это все вычисленное. Я просто буквально не знаю, как я могу представить мозаику, схематичную в XML, и потянуть его правильно с AS3. Какие-либо идеи?
Мне кажется, что ваши плитки действительно сводятся к макетам на сетке. Учитывая это, у меня был бы 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>
Выше приведен ваш первый пример (хотя я придумал цвета). Надеюсь, это поможет.
почему 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
Отказ от ответственности: я не лучший человек в написании XML. Например,
может вызывать затруднения, поскольку он усложняет схему xsd, а именно: если tile = no, он не должно иметь детей. Если tile = yes, то у него должны быть дочерние элементы. Также обратите внимание, что вам нужно переделать
. Также обратите внимание, что я не знаю, что является лучшим компромиссом между элементами и атрибутами. Также обратите внимание, что мне не нравится наличие
, а также
- возможность опечатки. Однако я не знаю лучшего способа, но хотел бы узнать, что это может быть. Также, возможно, этот формат слишком многословен. Кроме того, я не включил схему 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>
Для простоты вы можете рассмотреть возможность использования значений 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" />