PDA

Просмотр полной версии : Помогите разобраться в коде с xml


grayVENOM
12.04.2010, 12:04
Доброго времени суток!
Я пока еще новичек в as, вот разбираюсь с примерами. Вот код класса поля (функция построения поля по xml файлу).
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
В общем изменил я вот так:
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
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
Спасибо!