PDA

Просмотр полной версии : Рекурентный мувиклип


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
Вот пример. Но учти - рекурсия! То есть будет исполняться до упора (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
Честно говоря не совсем понял что ты хочешь сделать.... и не уверен действительно ли тебе нужно именно это..

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

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
Старый исходник где-то посеял, пришлось новый рисовать.

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