PDA

Просмотр полной версии : Данные из ХМЛ, координаты для рисования


Kinley
02.04.2008, 01:59
В общем такая проблема.

Нужно, чтобы флешка рисовала квадратик, беря координаты из xml-файла.
Функция рисования квадратика сама по себе работает отменно. Но если заменяешь на данные, взятые из xml, начинают твориться чудеса: сначала я думал, что он квадратище, который получается, просто уходит за рамки. Но после многочисленных экспериментов установил: при изменении х и у в файле, квадрат меняется в размерах с умножением, видимо, на какой-то коэффициент k...

чтобы наглядно это увидеть, попробуйте значения (х,у) = (1,1), (2,2), (3,3)...

Кто может, объясните пожалуйста, что это такое... 0_о

_root.createEmptyMovieClip("myClip", 1);

drawSqr = function(xx,yy,a) {
myClip.lineStyle(2,0x234567);
myClip.beginFill(0x7878FF);
myClip.moveTo(xx,yy);
myClip.lineTo(xx+a,yy);
myClip.lineTo(xx+a,yy+a);
myClip.lineTo(xx,yy+a);
myClip.endFill();
}

make = function () {
var xx = my_xml.childNodes[0].attributes.xx;
var yy = my_xml.childNodes[0].attributes.yy;
drawSqr (xx,yy,50);
trace(xx+" "+yy);
}

//onMouseDown = trace(_xmouse+" "+_ymouse);

myClip.onMouseDown = function() {
drawSqr(_xmouse,_ymouse,50);
}

my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
make();
}
};
my_xml.load("data.xml");
trace(my_xml.status);

XML:
<item id='1' name = 'item1' xx = '5' yy = '5'></item>

Molecula
02.04.2008, 02:10
Выделил цветом.

var xx = Number(my_xml.firstChild.childNodes[0].attributes.xx);
var yy = Number(my_xml.firstChild.childNodes[0].attributes.yy);


ХМЛь файл должен выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id='1' name = 'item1' xx = '5' yy = '5'></item>
</root>
а не одной строчкой.

screamge
02.04.2008, 02:22
Kinley, оформите код тегами .

lexo2000
02.04.2008, 08:00
По-моему, в функции рисования квадрата не хватает строчки
myClip.lineTo(xx, yy);, которая должна быть перед "myClip.endFill()".

Kinley
02.04.2008, 14:46
lexo2000, кажется это не имеет значения - он автоматом сам дорисовывает (в этом конкретном случае), когда используешь endFill().

Тем более, я пробовал и так и так.

Molecula, спасибо! Сейчас испробую. ТОлько вот вопрос: а почему низзя одной строчкой в один тэг?

И в чем в итоге отличие, когда я явно пропишу "childNodes[0]" или порсто скажу ему: "firstChild"

screamge, уже сделал! :) ...я просто сразу не нашел в час ночи, что да как.. Прошу простить меня, Уважаемые! :)

УРРА!!! Получилось! Спасибо! Все дело было в приведении типа... вотъ... :)

Kinley
06.04.2008, 02:16
А у меня продолжение истории! :)

В общем, я нарисовал свои квадратики, а вот дальше мне их надо связать между собой стрелочками. Тут родилась сразу масса вопросов.

1) Функцию стрелочки я написал, но вот проблема. Не могли бы вы объяснить, что за второй параметр в функции createEmptyMovieClip?
Потому что мои ислледования и эксперименты натолкнули меня на мысль, что это довольно-таки важный параметр... :)

2) Посоветуйте пожалуйста, как лучше описать связь между элементами в XML-документе. (чтобы потом по этим связям рисовать стрелочки)

Мой вариант:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id='1' name = 'item1' xx = '5' yy = '5'>
<rel> item2 </rel>
</item>
<item id='2' name = 'item2' xx = '50' yy = '50'>
</item>
<item id='3' name = 'item3' xx = '5' yy = '5'>
<rel> item2 </rel>
</item>
</root>

что-то типа такого...
но, если честно, смотрю сам, и не понимаю, как это использовать... 0_о

Помогите, пожалуйста, кто чем может... :)