Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-01-2003, 09:47   #1 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Object.prototype.copy (MX-safe)

ActionScript:
  1. /// duplicate any given Object (not MCs)
  2. Object.prototype.copy = function()
  3. {
  4.     var _t,i
  5.     ASSetPropFlags(Object.prototype,["copy"],1);
  6.     _t = new this.__proto__.constructor()
  7.     for(i in this){
  8.         if(typeof this[i] == "object")
  9.             _t[i] = this[i].copy()
  10.         else
  11.             _t[i] = this[i]
  12.     }
  13.     return _t
  14. }
Gabs schon mal von mir, aber als F5-Version
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!

Geändert von k7c4 (29-01-2003 um 12:31 Uhr)
k7c4 ist offline   Mit Zitat antworten
Alt 29-01-2003, 11:50   #2 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Thumbs up

Die MX Version kann sich genau so sehen lassen - daher immer her damit.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 29-01-2003, 12:15   #3 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hi k7c4,

sieht praktisch aus, dein Prototype. Aber der Aufruf des
Konstruktors in der Rekursion ist vielleicht nicht ganz
unproblematisch. Eigentlich sollte mit Aufruf des
Hauptkonstruktors alles erledigt sein, oder ?
Schau mal hier:

ActionScript:
  1. Object.prototype.copy = function() {
  2.     var result = new this.constructor();
  3.     for (var i in this) {
  4.         if (typeof this[i] == "object") {
  5.             result[i] = this[i].copy();
  6.         } else {
  7.             result[i] = this[i];
  8.         }
  9.     }
  10.     return result;
  11. };
  12. //
  13. ASSetPropFlags(Object.prototype, ["copy"], 1);
  14. //
  15. function MyClass(){
  16.     trace("MyClass");
  17.     this.prop = 6;
  18.     this.objProp = new MyClass2();
  19. }
  20. //
  21. function MyClass2(){
  22.     trace("MyClass2");
  23.     this.prop = 66;
  24. }
  25. //
  26. var m = new MyClass();
  27. trace("\n---------");
  28. var n = m.copy();


Ausgabe
MyClass
MyClass2

---------
MyClass
MyClass2
MyClass2 <- eigentlich unnötig

MyClass2 wird einmal von MyClass aufgerufen
und einmal durch das copy.

mfg r.

Geändert von bokel (29-01-2003 um 12:33 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 29-01-2003, 12:29   #4 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
@qlodbokelqlod

Das stimmt, aber wie sonst will ich sichergehen, dass das kopierten Objekt (in diesem Fall myClass2) auch von der richtigen Klasse abgeleitet ist? Das geht dann ja nur, wenn ich einen eigenen copy-protoype für jede zu kopierende Klasse schreibe und das kann es ja nicht sein
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!

Geändert von k7c4 (29-01-2003 um 12:30 Uhr)
k7c4 ist offline   Mit Zitat antworten
Alt 29-01-2003, 12:40   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja, das ist schwierig.

Vom OOP Standpunkt muesste man davon ausgehen,
dass jedes Objekt selbst seine copy Methode implementiert.

Aber wollen wir mal nicht so sein

Im realen Anwendungen kommt das Kopieren eh nicht
haeufig vor.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 29-01-2003, 12:55   #6 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
ralf komm da können wir doch ein Auge oder zwei zu drücken.

Ist Euch schon aufgefallen das der OOP Bereich nach einer kurzen Januar Flaute wieder so richtig auflebt. Der KI Contest brummt ja richtig.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 29-01-2003, 13:01   #7 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja klar,
ich habe ja jetzt den neuen Tastbildschirm bekommen,
da geht das ohne Probleme

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 29-01-2003, 14:01   #8 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Touch the screen

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 30-01-2003, 18:20   #9 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Zitat:
Geschrieben von bokel

Im realen Anwendungen kommt das Kopieren eh nicht
haeufig vor.

mfg r.
In diesem Thread brauche ich es sehr wohl
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 03-02-2003, 22:07   #10 (permalink)
Lord of the Strings
 
Benutzerbild von Leprosy
 
Registriert seit: Sep 2001
Beiträge: 252
Ich würde es clone() nennen.
__________________
Leprosy
Psynoxis
Leprosy ist offline   Mit Zitat antworten
Alt 04-02-2003, 12:22   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ich habe es jetzt auch gebraucht

In der main.fla des KI-Contests wird das Spielbrett-Objekt
der main an die KIs weitergegeben.

Bisher habe ich das Objekt über eine LocalConnection
verschickt, dabei wurde es automatisch kopiert.

Weil die LocalConnection aber nicht richtig funktioniert,
muss ich das Objekt jetzt kopieren, damit sich die
verschiedenen Filme nicht gegenseitig abschiessen.

mfg r.

Geändert von bokel (04-02-2003 um 12:34 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 05-02-2003, 14:00   #12 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Schön, wenn man helfen kann
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 26-02-2003, 13:49   #13 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Ich hab's jetzt so
ActionScript:
  1. /// duplicate any given Object
  2. Object.prototype.copy = function()
  3. {
  4.         var _t,i
  5.         _t = new this.__proto__.constructor()
  6.         for(i in this){
  7.                 if(typeof this[i] == "object")
  8.                 _t[i] = this[i].copy()
  9.                 else
  10.                 _t[i] = this[i]
  11.         }
  12.         return _t
  13. }
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele