سؤال

لذلك ، أنا أكتب برنامج AS3 الذي يرتدي بلاط البلاط. أريد أن يكون المستخدم قادرًا على إنشاء تخطيطي خاص به يمثله مستطيلات مختلفة. سيكون السحب والانهيار. سوف يضعون تخطيطيهم (الذي يتكون من بلاط مستطيل مختلف الحجم) وإسقاط الألوان/الأنماط عليها.

سيتم بعد ذلك أن يكون هذا التخطيطي مبلطًا على متن طائرة ثلاثية الأبعاد لتمثيل الشكل الفعلي.

لقد حصلت على جزء ثلاثي الأبعاد يعمل ، والعمل والسحب ، وما إلى ذلك. ما أفتقده هو الأشياء التخطيطية للأرضية. لقد قضيت الكثير من الوقت في محاولة لمعرفة أفضل حل ، لكن لا يمكنني الوصول إلى هناك.

فيما يلي بعض الأمثلة (من مجموعة كاملة من المجموعات المحتملة) لكيفية ظهور مخططات الأرضية:

alt text

alt text

alt text

alt text

البلاط المختلفة داخل التخطيطي هي المناطق القابلة للتجزئة. مشكلتي: كيف يمكن أن تمثل هذه المخططات في 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> 

ما سبق يمثل مثالك الأول (قمت بتكوين الألوان). امل ان يساعد.

نصائح أخرى

من أجل البساطة ، قد ترغب في التفكير في استخدام قيم 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" />

إخلاء المسئولية: أنا لست أفضل شخص في كتابة XML. على سبيل المثال، <Cell x="0" y="1" tile="no"/> يمكن أن يكون ألمًا ، لأنه يجعل مخطط XSD أكثر تعقيدًا - وهو: إذا كان البلاط = لا ، فلا ينبغي أن يكون له أطفال. إذا كان البلاط = نعم ، فيجب أن يكون لها أطفال. لاحظ أيضًا أنك تحتاج إلى إعادة صياغة <RgbColor>LightGrey</RgbColor>. لاحظ أيضًا أنني لا أعرف ما هي أفضل مفاضلة بين العناصر والسمات. لاحظ أيضًا أنني لا أحب وجود <Cells> إلى جانب <Cell> - فرصة مطبعية. ومع ذلك ، لا أعرف طريقة أفضل ، لكنني أرغب في معرفة ما قد يكون. أيضا ، ربما هذا التنسيق مطول للغاية. أيضًا ، لم أقم بتضمين مخطط 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>

لماذا XML؟ لماذا لا تسلسلها فقط باستخدام AMF3؟ أو إذا كنت بحاجة إلى شيء يمكن قراءته البشري ، جيسون يجب القيام به. لدى JSON نفس الكائنات الدلالية تمامًا مثل ECMA-SCRIPT ، كونها مجموعة فرعية من ECMA-SCRIPT ، في حين أن 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top