Flashhilfe.de - Flash Community

Prototype: .prototype.attachedMovies [Flash 8]

 


AntwortenRegistrieren Seite1  

BackToDos#1
Benutzerbild von BackToDos
Beiträge: 571
Wohnort: LE
Registriert: Apr 2006

12.05.2007, 01:37

fügt neue eigenschaft hinzu, in der attachte mcs sind

Prototype:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//definiere eine Funktion, die uns später nen String mit allen attachten Movies gibt
var toString:Function = function ():String {
   var a:Array = new Array();
   for (var s:String in this) {
      if (this[s] instanceof MovieClip) {
         var m:MovieClip = this[s];
         a.push("\t"+m._name+" - library id = '"+m.libraryID+"', depth = "+m.getDepth());;
      }
   }
   a.reverse();
   return "[Attached Movies \n"+a.join("\n")+"\n/Attached Movies]";
}
//definiere eine Funktion, die uns später alle attachten Movies in Reihenfolge des attachens gibt
var toArray:Function = function ():Array {
   var a:Array = new Array();
   for (var s:String in this) {
      if (this[s] instanceof MovieClip) a.push(this[s]);
   }
   a.reverse();
   return a;
}
//definiere den ersten getter für die neue Eigenschaft, der sie beim ersten aufruf nochmal überschreibt
var initGetter:Function = function ():Object {
   var a:Object = new Object();//neues Objekt zu speichern
   //setze Funktionen
   a.toString = toString;
   a.toArray = toArray;
   //überschreibe nochmal eigenschaft
   this.addProperty("attachedMovies",function () {return a},null);
   return a;//gebe das neue Objekt zurück, schließlich soll es beim ersten Mal auch schon klappen
}

MovieClip.prototype.addProperty("attachedMovies",initGetter,null);//füge die neue Eigenschaft hinzu
var oldAttach:Function = MovieClip.prototype.attachMovie;//speichere alte attachMovie-routine und setze neue
MovieClip.prototype.attachMovie = function (id:String,name:String,depth:Number,initObject:Object):MovieClip {
   var ret = oldAttach.apply(this,arguments);//einfach auf die alte weiterleiten und dann unseren Spaß
   ret.libraryID = id;
   this.attachedMovies[name] = ret;
   return ret;//rückgabe nicht vergessen
}
//mache das der Vollständigkeit halber auch analog für removeMovieClip
var oldRemove:Function = MovieClip.prototype.removeMovieClip;
MovieClip.prototype.removeMovieClip = function ():Void {
   if (this.libraryID != undefined) {
      delete this._parent.attachedMovies[this._name];
   }
   oldRemove.apply(this);
}


Beispiel Aufruf:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var foo1:MovieClip = _root.attachMovie("foo","foo1_mc",0);
var foo2:MovieClip = _root.attachMovie("foo","foo2_mc",1,{_x:100});
_root.attachMovie("bar","bar1_mc",2,{_y:100});
trace(_root.attachedMovies);
foo1.removeMovieClip();
trace(_root.attachedMovies);
foo1.swapDepths(10);
trace(_root.attachedMovies);
/**** OUTPUT ****
[Attached Movies
   foo1_mc - library id = 'foo', depth = 0
   foo2_mc - library id = 'foo', depth = 1
   bar1_mc - library id = 'bar', depth = 2
/Attached Movies]
[Attached Movies
   foo2_mc - library id = 'foo', depth = 1
   bar1_mc - library id = 'bar', depth = 2
/Attached Movies]
[Attached Movies
   foo2_mc - library id = 'foo', depth = 1
   bar1_mc - library id = 'bar', depth = 2
/Attached Movies]
****************/
<

greetz
back2dos
Schlagwörter: Movieclip, prototype
Werbung
Beiträge: 0
Registriert: Feb 2016



AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de