Форум 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)
-   -   MovieClip между двумя другими MovieClip (http://www.flasher.ru/forum/showthread.php?t=105007)

MurziQ 06.12.2007 02:27

MovieClip между двумя другими MovieClip
 
Знаю звучит както странно, однако проблема есть а как решить её я незнаю...
Если коротко то у нас есть ХМЛ файл откуда читается определенные данные
[<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;
                }
        }
};


CorC 06.12.2007 10:15

Рисовать ЖД лайнами в клипе который под всеми остальными, т.е. не создавать gg каждый раз, а один на всех...

MurziQ 06.12.2007 13:21

эээм... тока у нас ведь тогда получиться что соединяться только два города. о_0 вообщем проблема все еще актуальна... ><

amesqit 06.12.2007 14:30

а что мешает соединить N городов?

MurziQ 06.12.2007 15:41

что мешает? банальное не знание как это сделать...

amesqit 06.12.2007 15:58

В общем нужно
1) чуточку почитать про класс XML
Так же, как я понимаю, задача в конечном итоге, не в просто в рисовании, следовательно
2) нужно построить граф, а точнее его матричное представление.
Имея представление того, что с чем соединяется, можно без проблем соединить вершины. Тем самым будет решена, проблема рисования и не только.

MurziQ 06.12.2007 16:38

Да это то я понимаю )) вопрос то в том с помощью чего это сделать (функции и прочее) - так бы я тут не просил о помощи... ;)

amesqit 06.12.2007 16:52

линии строить Вы умеете, циклами пользоваться тоже, для матрицы есть класс Array(), а вот как получить информацию о связях между городами это уже ваша задача, я бы например, с таким xml-документом работать не стал, он мне не говорит ни о чем, кроме типа города, его координат и дороги ведущей из города в неизвестность.
Я просто не знаю чем еще Вам можно помочь, или вы предлагаете написать код за Вас?

MurziQ 06.12.2007 18:26

да нет не предлагаю - просто я неочень понимаю как сделать так чтобы строилась какбы одна кривая линия через цикл.

amesqit 06.12.2007 21:55

если сможете построить матрицу, сможете построить и кривую, вкраце имя мартрицу связей

Москва | Пенза | Урюпинск
Москва 0 1 0
Пенза 1 0 1
Урюпинск 0 1 0

т.к. она симметричная относительно главной диагонали, берем нижнюю треугольную матрицу:

000
100
010

при обходе матрицы смотрим где единицы, в данном случае "Москва-Пенза" и "Пенза-Урюпинск", в так же у нас хранится массив объектов с координатами и т.д. "Москва, Пенза, Урюпинск" смотрим координаты элементов пересечения и строим прямую по ним.
Таким образом в цикле Вы обойдете все вершины графа и соедините между собой то, что нужно.


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

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