Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как создать по существующей вложенности Object-ов, иерархию MovieClip рекурсию? (http://www.flasher.ru/forum/showthread.php?t=174737)

Vitalya 01.02.2012 14:52

Как создать по существующей вложенности Object-ов, иерархию MovieClip рекурсию?
 
Вот эта иерархия ОБЪЕКТОВ

Код AS3:

var o:Object = 
                                {
                                        n1:
                                        {
                                                n21:null,
                                                n22:
                                                {
                                                        n31:
                                                        {
                                                                n41:null,
                                                                n42:null
                                                        }
                                                },
                                                n23:
                                                {
                                                        n32:null,
                                                        n33:null
                                                }
                                        },
                                        n2:
                                        {
                                                n24:null,
                                                n25:
                                                {
                                                        n34:
                                                        {
                                                                n43:null,
                                                                n44:null
                                                        }
                                                },
                                                n26:
                                                {
                                                        n35:null,
                                                        n36:null
                                                }
                                        }
                                }


fish_r 01.02.2012 15:20

for, for each, for in?

Vitalya 01.02.2012 15:38

а конкретнее???

Genzo 01.02.2012 15:40

Наверное как-то так :
Код AS3:

private function createChildrens(parent:Object , container:DisplayObjectContainer):void
{
        for(var i:* in parent)
        {
                if(i is DisplayObject || i is Class){
                        container.addChild((i is DisplayObject) ? i : new i());
                }else{
                        createChildrens(i , container);
                }
        }
}

Задавайте вопрос нормально, ни черта не понятно.

Vitalya 01.02.2012 17:53

Нужно создать по объекту типа Object, MovieClip. при этом имена мувиков должны совподать с именами объектов!

Добавлено через 38 секунд
Иерархию объектов я выслал в начале

Genzo 01.02.2012 18:12

Так Object или MovieClip? В вашей иерархии одни null'ы , и них ничего кроме null'ов не создать. Куда потом эти объекты девать?

amesqit 01.02.2012 18:27

Все же почитайте про циклы по ссылкам от fish_r. Объект не лучшая модель для построения вложеных клипов.
Код AS3:

var mc:MovieClip = new MovieClip();
addChild(mc)
createMC(o, mc)
function createMC(obj:Object, inMc:MovieClip)
{
    for(var val:String in obj)
    {
        if(obj[val])
        {
            var mc:MovieClip = new MovieClip()
            inMc.addChild(mc);
            createMC(obj[val], mc)
        }
    }
}


Vitalya 01.02.2012 19:02

amesqit, спасибо большое! Очень выручили!)
Я не знал того момента
Код AS3:

for(var val:String in obj)

, в смысле не знал , что val как Стринг даст имя свойства)

Добавлено через 20 минут
Код AS3:

var mc:MovieClip = new MovieClip();
addChild(mc)
createMC(o, mc)
function createMC(obj:Object, inMc:MovieClip)
{
    for(var val:String in obj)
    {
        //if(obj[val])
        //{
            var mc:MovieClip = new MovieClip()
            inMc.addChild(mc);
            createMC(obj[val], mc)
        //}
    }
}

Чтоб все дерево скопировало пришлось убрать условие.


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

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