Question

Alors, j'écris un programme AS3 que les carreaux carreaux de sol. Je veux que l'utilisateur de pouvoir créer leur propre schéma de plancher représenté par différents rectangles. Ce sera glisser-déposer. Ils déposeront leur schéma (qui est composé de différentes tailles tuiles rectangulaires) et déplacer les couleurs / motifs sur eux.

Ce schéma sera alors en mosaïque sur un plan 3D pour représenter ce que le sol réelle ressemblerait.

J'ai le travail partiel 3D, travail glisser-déposer, etc. Ce que je suis absent est le plancher des choses schématique. J'ai passé beaucoup de temps à essayer de trouver la meilleure solution, mais je ne peux pas y arriver ASSEZ.

Voici quelques exemples (sur un tas de combinaisons possibles) de la façon dont les schémas de sol pourraient chercher:

text alt

text alt

text alt

text alt

Les différentes tuiles dans le schéma sont les régions largables. Mon problème: Comment représenter ces schémas en XML ? Ne vous inquiétez pas de carrelage, de calibrage, etc. J'ai que tout compris déjà. Je viens littéralement ne sais pas comment je peux représenter un schéma de tuiles en XML et d'en tirer correctement avec AS3. Toutes les idées?

Était-ce utile?

La solution

Il me semble que vos tuiles bouillir vraiment à dispositions sur une grille. Compte tenu de cela, j'avoir le xml pour la tuile est constituée d'une liste d'éléments, chaque élément pourrait avoir des propriétés de la ligne / colonne de la place en haut à gauche de l'élément, la largeur de ligne et la durée de la colonne pour cet élément, et remplir pour cet élément. Quelque chose comme ceci:

<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> 

Ce qui précède représenterait votre premier exemple (je compose les couleurs cependant). Hope qui aide.

Autres conseils

Par souci de simplicité, vous voudrez peut-être envisager d'utiliser les x, y, largeur, hauteur des valeurs. C'est le format que l'utilisation de flash.geom.Rectangle et 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" />

Disclaimer: Je ne suis pas la meilleure personne à l'écriture XML. Par exemple, <Cell x="0" y="1" tile="no"/> peut être une douleur, car il rend le schéma xsd plus compliqué - qui est la suivante: si tile = non, il ne devrait pas avoir des enfants. Si tile = oui, alors il doit avoir des enfants. Notez également que vous devez réusinage <RgbColor>LightGrey</RgbColor>. Notez également que je ne sais pas quel est le meilleur compromis entre les éléments et attributs. Notez également que je ne aime pas avoir <Cells> ainsi que <Cell> - opportunité typo. Cependant, je ne sais pas beaucoup mieux, mais je voudrais savoir ce que cela pourrait être. Aussi, peut-être ce format est trop bavard. En outre, je ne mentionnaient pas un schéma XSD, mais vous pouvez commencer à utiliser ici: http://www.google.com/search?hl=en&q=xsd+schema+generator&aq=f&aqi=&aql=&oq=&gs_rfai=

inspire également une autre réponse, vous pouvez définir des couleurs de motif séparément, puis se référer à eux ... peut être sujette à erreur.

<?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>

Pourquoi XML? pourquoi ne pas simplement sérialisation à l'aide AMF3? ou si vous avez besoin de quelque chose lisible par l'homme, JSON devrait le faire. JSON a exactement la même sémantique de l'objet que ECMA script, étant un sous-ensemble de ECMA script, alors que XML ne pas, ce qui rend le travail avec XML assez ennuyeux.

représentation

du premier schéma en tant que structure d'objet:

[
    {"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

Vous pouvez utiliser la as3corelib sérialisation .

greetz
back2dos

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top