[ascoders] AW: AW: FL5: _depth

@Martin Fleck: Ich habe von dir einen alten Thread gefunden:

http://groups.google.com/groups?q=_depth+group:macromedia.general.german
y&hl=en&lr=&ie=UTF-8&safe=off&selm=980tuh%24qbk%241%40misc.macromedia.co
m&rnum=1

Leider gibt es die URL von were-here.com nicht mehr. Weißt du noch worum
es da genau ging?

@Timm Stamm: Sorry wg. HTML mail.



Hi Till,

danke für dein Script. Ich habs für attachMovie umgeschrieben. So siehts
aus:

        MovieClip.prototype.attachClip = function(id,newname,tiefe)
        {
                if(typeof(this.tiefen)!="object")
                {
                        this.tiefen = new Array();
                }
                
                while(true)
                {               
                        if(typeof(this.tiefen[tiefe])=="movieclip")
                        {                               
                                tiefe++;
                        }
                        else
                        {
                                break;
                        }
                }               
                this.attachMovie(id,newname,tiefe);             
                this.tiefen[tiefe]=this[newname];
                return tiefe;
        }


//:BUG: ball wird zwar in Tiefe 10 attacht allerdings durch das folgende
attachClip wieder ersetzt.
_root.attachMovie("ball","ball1",10);

trace(_root.attachClip("b","b1",10));
b1._x = 150;
trace(_root.attachClip("b","b2",10));
b2._y = 200;
trace(_root.attachClip("b","b3",10));
b3._x = 300;


Und hier siehst du schon mein Problem, das du auch angesprochen hast. Da
man nicht die Tiefe abfragen kann muss jede attachMovie Funktion über
attachClip laufen um registriert zu werden. Der User darf einfach nicht
attachMovie im gleichen Objekt und gleicher Tiefe verwenden. ):

Und damit er das auch nicht macht, hier ein Lösungsansatz. Ich
überschreibe attachMovie mit dem Inhalt deiner attachClip Funktion.
Vorher speichere ich die alte attachMovie in a.


        MovieClip.prototype.a = MovieClip.prototype.attachMovie;
        
        MovieClip.prototype.attachMovie = function(id,newname,tiefe)
        {               
                if(typeof(this.tiefen)!="object")
                {
                        this.tiefen = new Array();
                }
                
                while(true)
                {               
                        if(typeof(this.tiefen[tiefe])=="movieclip")
                        {                               
                                tiefe++;
                        }
                        else
                        {
                                break;
                        }
                }               
                this.a(id,newname,tiefe);               
                this.tiefen[tiefe]=this[newname];
                return tiefe;
        }



trace(_root.attachMovie("ball","ball1",10));

trace(_root.attachMovie("b","b1",10));
b1._x = 150;
trace(_root.attachMovie("b","b2",10));
b2._y = 200;
trace(_root.attachMovie("b","b3",10));
b3._x = 300;


Damit werden jetzt alle MCs attached.

Problem dabei ist, dass der Array "tiefen" immer größer wird. Wenn der
attachte und in "tiefen" gespeicherte MC also wieder gelöscht wird,
sollte er auch aus dem tiefen Array verschwinden. Also müsste man auch
die removeMovieClip Funktion umschreiben. Wenn der Frame mit dem
attacheten Inhalt einfach zu Ende ist, dann müsste auch aus dem "tiefen"
Array gelöscht werden. Letzteres ist glaube ich nicht möglich.

Gruß
Alex

------------------------------------------------------
Archiv   : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: