Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Рекурентный мувиклип (http://www.flasher.ru/forum/showthread.php?t=56570)

BlooDHounD 02.04.2004 23:48

Рекурентный мувиклип
 
Как програмно создать рекурентный мувиклип?
Есть мувиклип. Нужно обработчик внутри него, который
при n=0 не создавал мувика, а при n=... создал n мувиков-самих-себя, у которых внутри такая же проверка.
Во как загнул Ж)

Dindin 03.04.2004 01:16

Код:

onEnterFrame = function ()
{
    if (n!=0)


}


silin 03.04.2004 01:38

mc.onEnterFrame=function(){
for(var i=0;i<n;i++){
this.duplicateMovieClip(this._name+i,this.getNextHighestDepth());
this._parent[this._name+i].onEnterFrame=this.onEnterFrame;
}

Dindin 03.04.2004 01:51

Вложений: 1
Вот пример. Но учти - рекурсия! То есть будет исполняться до упора (255 уровней вложения - гарантированы), то есть просматривать лучше в дебагере.

BlooDHounD 03.04.2004 02:32

Цитата:

Вот пример. Но учти - рекурсия! То есть будет исполняться до упора (255 уровней вложения - гарантированы), то есть просматривать лучше в дебагере.
Лучше бы я вооще не запускал!
Но сёравно санке я принцип понял!

BlooDHounD 03.04.2004 05:44

Не! я подумал и решил, что мне совсем не так надо!

я тут такое замутил!!!

Рассказываю как надо:
У меня есть в первом кадре флэшки ниже приведённый код:
Код:

var txts=new Array("папа","я","мама")
for(var i=0;i<txts.length;i++)
{
        _root.attachMovie("mc","mc"+i,i);
        _root["mc"+i]._x=30*i;
        _root["mc"+i]._y=20;
        _root["mc"+i].txt.text=txts[i];
}

Енто динамически три мувика создаются.
Дальше просто жуть (пример того, что должно быть):
Код:

_root["mc0"].ins("Папин брат 1")
_root["mc0"].m[0].ins("Сын 1 папиноного брата 1")
_root["mc0"].m[0].m[0].ins("Игрушка 1 сына 1 папиноного брата 1")
_root["mc0"].ins("Папин брат 1")
_root["mc2"].ins("Мамина сестра 1")
_root["mc2"].m[0].ins("Дочь 1 маминой сестры 1")
_root["mc2"].m[0].ins("Дочь 2 маминой сестры 1")
_root["mc2"].ins("Мамина сестра 2")
_root["mc2"].m[1].ins("Дочь 1 маминой сестры 2")
_root["mc2"].m[1].m[0].ins("Игрушка 1 дочери 1 маминой сестры 2")
_root["mc2"].m[1].m[0].ins("Игрушка 2 дочери 1 маминой сестры 2")
_root["mc2"].m[1].m[0].ins("Игрушка 3 дочери 1 маминой сестры 2")
_root["mc2"].m[1].ins("Дочь 2 маминой сестры 2")
_root["mc2"].m[1].m[1].ins("Игрушка 1 дочери 2 маминой сестры 2")
_root["mc2"].m[1].m[1].ins("Игрушка 2 дочери 2 маминой сестры 2")
_root["mc2"].ins("Мамина сестра 3")
_root["mc2"].ins("Мамина сестра 4")
_root["mc2"].m[3].ins("Дочь 1 маминой сестры 4")

Вот эти m-ки - это мувики.
ins(x) - функция которая создаёт мувики в мувике.

Всё это должно сформировать во такой (это пример) многомерный массив мувиков:
Код:

_root["mc0"].m[0]
_root["mc0"].m[0].m[0]
_root["mc0"].m[0].m[0].m[0]
_root["mc0"].m[1]
_root["mc2"].m[0]
_root["mc2"].m[0].m[0]
_root["mc2"].m[0].m[1]
_root["mc2"].m[1]
_root["mc2"].m[1].m[0]
_root["mc2"].m[1].m[0].m[0]
_root["mc2"].m[1].m[0].m[1]
_root["mc2"].m[1].m[0].m[2]
_root["mc2"].m[1].m[1]
_root["mc2"].m[1].m[1].m[0]
_root["mc2"].m[1].m[1].m[1]
_root["mc2"].m[2]
_root["mc2"].m[3]
_root["mc2"].m[3].m[0]

Я даже картинку нарисовал, как они связаны должны быть:

http://blooddy.at.tut.by/tree.gif

Значение, которое передаётся .ins(x) делает так:
Код:

MovieClip.prototype.ins=function(x)
{
        ...
        this.txt.text=x
        ...
}

И на последок маленькая просьба: помогите енто организовать. Всем, кто поможет, и тем, кто хоябы прочитал и попугался, спасибочки!

Dindin 03.04.2004 11:24

Вопрос: откуда берется дерево? Каков алгоритм его генерации? Или оно статическое?

BlooDHounD 03.04.2004 13:57

Ну как, откуда? Это я массив в виде дерева представил!
Он же многомерный! В виде матрицы - незьзя, так остаются графы.

Например: mc2 состоит из 4-ёх элементов:
* 0-й состоит из 2-х, которые в свою очередь больше не деляться.
* 1-й - из 2-ух...

И тд.

BlooDHounD 03.04.2004 14:09

Элементы - они же мувиклипы.

Dindin 03.04.2004 16:03

Совет: Опиши все это во внешнем XML, потом грузи его, разбирай дерево и по дереву отрисовывай структуру. Пример-исходник нужен?

dekud 03.04.2004 16:06

Вложений: 1
Честно говоря не совсем понял что ты хочешь сделать.... и не уверен действительно ли тебе нужно именно это..

ну впринципе глянь файлик....

PS. почитай на досуге http://www.dembicki.narod.ru/tutor/a4.htm может пригодится

dekud 03.04.2004 16:07

А впинципе действительно Dindin прав с деревьями лучше использовать XML

silin 03.04.2004 16:34

Цитата:

помогите енто организовать
так уже и так все организовано - аттач свой mc по дереву куда надо
пример для первой ветки
var txts=new Array("папа","я","мама");
//who-переменная текстового поля в mc
for(var i=0;i<txts.length;i++)_root.attachMovie("mc","mc"+i,i,{who:txts[i],_x:50*i,_y:20});
for(i=0;i<2;i++) mc0.attachMovie("mc",i,i,{who:"0_"+i,_x:50*i,_y:60});
mc0[0].attachMovie("mc",0,0,{who:"0_0_0",_x:50,_y:120});
mc0[0][0].attachMovie("mc",0,0,{who:"0_0_0_0",_x:50,_y:160});
ну и так далее

BlooDHounD 03.04.2004 21:03

Цитата:

Совет: Опиши все это во внешнем XML, потом грузи его, разбирай дерево и по дереву отрисовывай структуру. Пример-исходник нужен?
Нужен!

Dindin 03.04.2004 23:59

Вложений: 1
Старый исходник где-то посеял, пришлось новый рисовать.

BlooDHounD 04.04.2004 03:23

Dindin, санке!
Довно мечтал подружитьсяс XML, но даже когда PHP учил так у меня и не вышло -- не понимал я как у них "конфликт родителей и детей" решался. А тут просто МЕГА каментарии!


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

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