![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 6
|
Знаю звучит както странно, однако проблема есть а как решить её я незнаю...
Если коротко то у нас есть ХМЛ файл откуда читается определенные данные [<it name="Piter" cordx="100" cordy="50" type="megapolis" fromx="50" fromy="20" />] Программа вырисовывает все города и прочее. Так вот проблема в том что надо еще эти города соединить "железной дорогой" которая пойдет к объекту с именем name и кординатами cordx и cordy из кординат fromx и fromy... Пробывал сначала просто линиями соединять но запутался в depth'e >< Потом решил, что всетаки железная дорого ftw и начал мудрить с всякими atan'ами и прочее, и как вы видите безрезультатно. вот код с линиями... если кто знает как сделать с MovieClipом буду очень признателен... my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
parovozik();
}
};
my_xml.load("data3.xml");
parovozik = function() {
var len = my_xml.childNodes[0].childNodes[0].childNodes.length;
for (var i = 0; i<len; i++) {
_root.createEmptyMovieClip("gr"+i, i+1);
var gr = _root["gr"+i];
var color = 0xFF0000;
var tp = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.type;
var xx = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.cordx;
var yy = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.cordy;
var fromx = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.fromx;
var fromy = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.fromy;
gr.attachMovie (my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.type,"gr"+i,{_x:0, _y:0});
gr._x = xx;
gr._y = yy;
this.createEmptyMovieClip("gg"+i,i+i+1);
var gg = _root["gg"+i];
gg.lineStyle(2,color);
gg.moveTo(fromx,fromy);
gg.lineTo(gr._x,gr._y);
gr.createTextField("tf", 1,-12, 9, 80, 20);
with (gr.tf) {
autoSize = "middle";
text = my_xml.childNodes[0].childNodes[0].childNodes[i].attributes.name;
}
}
};
Последний раз редактировалось iNils; 06.12.2007 в 02:46. |
|
|||||
|
Рисовать ЖД лайнами в клипе который под всеми остальными, т.е. не создавать gg каждый раз, а один на всех...
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 6
|
эээм... тока у нас ведь тогда получиться что соединяться только два города. о_0 вообщем проблема все еще актуальна... ><
|
|
|||||
|
Регистрация: Dec 2007
Сообщений: 6
|
что мешает? банальное не знание как это сделать...
|
|
|||||
|
В общем нужно
1) чуточку почитать про класс XML Так же, как я понимаю, задача в конечном итоге, не в просто в рисовании, следовательно 2) нужно построить граф, а точнее его матричное представление. Имея представление того, что с чем соединяется, можно без проблем соединить вершины. Тем самым будет решена, проблема рисования и не только. |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 6
|
Да это то я понимаю )) вопрос то в том с помощью чего это сделать (функции и прочее) - так бы я тут не просил о помощи...
![]() |
|
|||||
|
линии строить Вы умеете, циклами пользоваться тоже, для матрицы есть класс Array(), а вот как получить информацию о связях между городами это уже ваша задача, я бы например, с таким xml-документом работать не стал, он мне не говорит ни о чем, кроме типа города, его координат и дороги ведущей из города в неизвестность.
Я просто не знаю чем еще Вам можно помочь, или вы предлагаете написать код за Вас? |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 6
|
да нет не предлагаю - просто я неочень понимаю как сделать так чтобы строилась какбы одна кривая линия через цикл.
|
|
|||||
|
если сможете построить матрицу, сможете построить и кривую, вкраце имя мартрицу связей
Москва | Пенза | Урюпинск Москва 0 1 0 Пенза 1 0 1 Урюпинск 0 1 0 т.к. она симметричная относительно главной диагонали, берем нижнюю треугольную матрицу: 000 100 010 при обходе матрицы смотрим где единицы, в данном случае "Москва-Пенза" и "Пенза-Урюпинск", в так же у нас хранится массив объектов с координатами и т.д. "Москва, Пенза, Урюпинск" смотрим координаты элементов пересечения и строим прямую по ним. Таким образом в цикле Вы обойдете все вершины графа и соедините между собой то, что нужно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:30. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|