Просмотр полной версии : Рекурентный мувиклип
BlooDHounD
02.04.2004, 23:48
Как програмно создать рекурентный мувиклип?
Есть мувиклип. Нужно обработчик внутри него, который
при n=0 не создавал мувика, а при n=... создал n мувиков-самих-себя, у которых внутри такая же проверка.
Во как загнул Ж)
onEnterFrame = function ()
{
if (n!=0)
}
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;
}
Вот пример. Но учти - рекурсия! То есть будет исполняться до упора (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
...
}И на последок маленькая просьба: помогите енто организовать. Всем, кто поможет, и тем, кто хоябы прочитал и попугался, спасибочки!
Вопрос: откуда берется дерево? Каков алгоритм его генерации? Или оно статическое?
BlooDHounD
03.04.2004, 13:57
Ну как, откуда? Это я массив в виде дерева представил!
Он же многомерный! В виде матрицы - незьзя, так остаются графы.
Например: mc2 состоит из 4-ёх элементов:
* 0-й состоит из 2-х, которые в свою очередь больше не деляться.
* 1-й - из 2-ух...
И тд.
BlooDHounD
03.04.2004, 14:09
Элементы - они же мувиклипы.
Совет: Опиши все это во внешнем XML, потом грузи его, разбирай дерево и по дереву отрисовывай структуру. Пример-исходник нужен?
Честно говоря не совсем понял что ты хочешь сделать.... и не уверен действительно ли тебе нужно именно это..
ну впринципе глянь файлик....
PS. почитай на досуге http://www.dembicki.narod.ru/tutor/a4.htm может пригодится
А впинципе действительно Dindin прав с деревьями лучше использовать XML
помогите енто организовать
так уже и так все организовано - аттач свой 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, потом грузи его, разбирай дерево и по дереву отрисовывай структуру. Пример-исходник нужен?Нужен!
Старый исходник где-то посеял, пришлось новый рисовать.
BlooDHounD
04.04.2004, 03:23
Dindin, санке!
Довно мечтал подружитьсяс XML, но даже когда PHP учил так у меня и не вышло -- не понимал я как у них "конфликт родителей и детей" решался. А тут просто МЕГА каментарии!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.