Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите разобраться в коде с xml (http://www.flasher.ru/forum/showthread.php?t=138611)

grayVENOM 12.04.2010 12:04

Помогите разобраться в коде с xml
 
Доброго времени суток!
Я пока еще новичек в as, вот разбираюсь с примерами. Вот код класса поля (функция построения поля по xml файлу).
Код AS1/AS2:

class field
{
        private var depth:Number = 1000;
        private var columns:Number = 10;
        private var rows:Number = 10;
        private var spacing:Number = 30;
        private var mc:MovieClip;
        private var numberOfTypes:Number = 8;
        public function field()
        {
                function buildGrid()
                {
                        trace("Test!");
                        var board:XMLNode = new XML();
                        board = boardXML.firstChild;
                        var tempArray:Array = new Array();
                        tempArray = board.childNodes;
                        this.mc = _root.createEmptyMovieClip("mc", this.depth);
                        for (var j:Number = 0; j<this.rows; ++j)
                        {
                                var tempArray2:Array = new Array();
                                tempArray2 = tempArray[j].childNodes;
                                for (var i:Number = 0; i<this.columns; ++i)
                                {
                                        var name:String = "cell"+i+"_"+j;
                                        var x:Number = i*this.spacing;
                                        var y:Number = j*this.spacing;
                                        var type:Number = tempArray2[i].attributes.type;
                                        this.mc.attachMovie("cell",name,++this.depth);
                                        this.mc[name]._x = x;
                                        this.mc[name]._y = y;
                                        this.mc[name] = {x:i, y:j, name:name, type:type, clip:this.mc[name], dot:this.mc[name].tile.dot};
                                        this.mc[name].clip.tile.gotoAndStop(type);
                                }
                        }
                        var boardXML:XML = new XML();
                        boardXML.onLoad = buildGrid;
                        boardXML.load("game.xml");
                }
        }
}

В общем, если выкинуть весь xml отсюда, то все работает. Помогите плз разобраться или дайте ссылочку какую-нибудь, где понятным языком написано про использование xml (окромя гугла).
Заранее спасибо и извиняюсь, если что не так =)

in4core 12.04.2010 13:09

Функцию в функции писать - дурной тон! А если уж пишите класc то тем более порнография.

Опишите полностью что вы хотите сделать своиv классом. Я вам напишу может что. А так же покажите структуру XML . Мне кажется что то простое хотите сделать, а навернули свыше крыши. Вообщем рассказывайте.
п.с.
Код:

(boardXML == undefined) or ! ?

grayVENOM 12.04.2010 13:23

Код:

<map>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="5" />
    <cell type="4" />
    <cell type="4" />
    <cell type="4" />
    <cell type="6" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="4" />
    <cell type="1" />
    <cell type="4" />
    <cell type="2" />
    <cell type="6" />
    <cell type="1" />
    <cell type="1" />
    <cell type="3" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="3" />
    <cell type="1" />
    <cell type="1" />
    <cell type="3" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="4" />
    <cell type="2" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="5" />
    <cell type="4" />
    <cell type="2" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="2" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="3" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="2" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="2" />
    <cell type="8" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="2" />
    <cell type="4" />
    <cell type="8" />
    <cell type="1" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="4" />
    <cell type="1" />
    <cell type="4" />
    <cell type="8" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
  </row>
  <row>
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
    <cell type="1" />
  </row>
</map>

вот game.xml
Задумка простая - построить большое квадратное поле из множества маленьких квадратиков разного типа, тип каждого квадратика задан в xml. И все!
А насчет функции в функции: я просто брал пример из книжки, там было осуществлено все без классов... а так как я хотел сделать отдельный класс отвечающий за построение поля, то было сделано так: в конструктор был скопирован код... получилось функция в функции.

udaaff 12.04.2010 13:27

this в обработчике у вас указывает на объект через который вызывается этот обработчик, т.е. на boardXML

grayVENOM 13.04.2010 11:12

Простите, а вы не могли бы исправить, что не так? this тогда здесь вообще не нужен?

udaaff 13.04.2010 11:24

Передавайте ссылку в свой класс на контейнер, в который будете аттачить ваши мувики.

grayVENOM 18.04.2010 16:24

В общем изменил я вот так:
Код AS1/AS2:

class field
{
          ...
        private var boardXML:XML = null;
        public function field()
        {
                this.boardXML:XML = new XML();
                this.boardXML.onLoad = buildGrid();
                this.boardXML.load("game.xml");
        }
          ...
}

Пишет, что "This statement is not permitted in a class definition." на строчки с onLoad и load. Что я делаю не так?

in4core 18.04.2010 17:36

Код AS1/AS2:

class field {
  private var boardXML:XML = null;
  public function field()
        {
                boardXML = new XML();
                boardXML.onLoad = mx.utils.Delegate.create(this,buildGrid);
                boardXML.load("game.xml");
        }
          private function buildGrid() {
          trace(boardXML.firstChild.childNodes)
            }
}


grayVENOM 18.04.2010 18:32

Спасибо!


Часовой пояс GMT +4, время: 12:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.