Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Свой attachMovie, нужен совет (http://www.flasher.ru/forum/showthread.php?t=120741)

_steF 29.01.2009 15:07

Свой attachMovie, нужен совет
 
Больно не пинайте...
Вот наваял свой attachMovie:
Код AS3:

function AttachMovie(Lincage:Object, NewName:String, At:Number, _Xx:Number, _Yy:Number, parentMc:Object):Object{
        var ChildMc:Object = Lincage;
        ChildMc.name = NewName;
        parentMc.addChild(ChildMc);
        ChildMc.x = _Xx;
        ChildMc.y = _Yy;
        return parentMc.getChildByName(NewName);
}
 
for(var i=0;i<5;i++){
        var mcItem:MovieClip = AttachMovie( new baseMс(), "ini_"+i, i, 10, i*60, this);
        mcItem.buttonMode = true;
        .........
}

Работает.
Чем опасен етот код?

etc 29.01.2009 15:18

Код безумный.

mre 29.01.2009 15:25

А зачем возвращать через getChildByName?
Переменная At не используется и по-хорошему типа int должна быть.
Именование и типизация переменных оставляет желать лучшего.
Вместо Object используйте DisplayObject и DisplayObjectContainer.

Это для начала.

_steF 29.01.2009 15:39

Цитата:

Сообщение от __etc (Сообщение 794251)
Код безумный.

:)

У меня в старом проэкте очень много используется attachMovie. Пытаюсь минимзировать кодинг.

iNils 29.01.2009 15:56

У вас должно быть примерно так
Код AS3:

function attachMovie (linkage:DisplayObject, x:Number, y:Number, parentMc:DisplayObjectContainer):DisplayObject {
        linkage.x = x;
        linkage.y = y;
        parentMc.addChild (linkage);
        return linkage;
}
 
for (var i=0; i<5; i++){
        var mcItem:MovieClip = attachMovie (new baseMс (), 10, i * 60, this) as MovieClip;
        mcItem.buttonMode = true;
        .........
}


etc 29.01.2009 16:12

Можно так:
Код AS3:

function attachMovie (linkage:DisplayObject, x:Number, y:Number, parentMc:DisplayObjectContainer):DisplayObject {
        linkage.x = x;
        linkage.y = y;
        return parentMc.addChild(linkage);
}


Nirth 29.01.2009 16:51

Код AS3:

function attachMovie(movie:DisplayObject, container:DisplayObjectContainer, init:Object = null):DisplayObject
{
        var result:DisplayObject = container.addChild(movie);
 
        if(init)
        {
                for(var propertyName:String in init)
                {
                        try
                        {
                                result[propertyName] = init[propertyName];
                        }
                        catch(e:Error)
                        {
                                trace('You Bloody Moron, there is no such property, motherfucker!');
                        }
                }
        }       
        return result;
}

И вот еще тебе createEmptyDisplayObject :D
Код AS3:

function createEmptyDisplayObject(container:DisplayObjectContainer, generator:Class = null):DisplayObject
{
    if(generator == null)
        generator = flash.display.Sprite;
    return container.addChild(new generator());
}


silin 29.01.2009 20:57

если уж дословно, то
Код AS3:

public function attachMovie(id:String, name:String, depth:Number, initObject:Object) : MovieClip 
{
        var res:MovieClip;
        var cl:Class = getDefinitionByName(id) as Class;
        try
        {
                res = MovieClip(this.addChildAt(new cl(), int(depth)));
                res.name = name;
                for ( var param:String in initObject)
                {
                        res[param] = initObject[param];
                }
        }catch(err:Error){}
 
        return res;
}

бредовые затеи..
телТаржетов у вас в проекте не используется случаем ?, а то давайте и их сюда подтянем..:)

Nirth 29.01.2009 21:14

Кстати, через Proxy можно еще и slash нотацию попробывать=)

_steF 29.01.2009 21:50

Пасибо всем!!!!
Не одному мне помогли, я думаю ...

танкс


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

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