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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2003, 10:11   #1 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
private Methoden

ActionScript:
  1. Class = function() {};
  2.  
  3. function()
  4. {
  5. var $_privateMethod1 = function(a, b) { return a + b; };
  6. var $_privateMethod2 = function(a, b) { return a + b + this.method1(); };
  7.  
  8. this.prototype.method1 = function() { trace($_privateMethod1(2, 2)); return 1; };
  9.  
  10. this.prototype.method2 = function() { return $_privateMethod2.call(this); };
  11.  
  12. }.call(Class);

kommt von JABBy Panda
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 20-02-2003, 13:16   #2 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
also ich habe das nun getestet und muss sagen grenz genial...

aber.... 2 dinge....

zum einen gehen nun z.b Class.prototype.test = function() {};
nicht mehr.... sondern nur functionen die ich mit this.prototype...
innerhalb der
function()
{
}.call(Class);
definiere.....

ist bei mir so?

aber verstehen kann ich das ganze nicht... vor allem was macht
.call()???? ist das das call aus flash4?

aber das es geht finde ich genial
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 20-02-2003, 13:37   #3 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Was hinter der Idee steckt, das überhaupt zu wollen ist der Sicherheitsaspekt. Man hat keinen Zugriff mehr auf die privaten Methoden. Leider funktioniert das so noch nicht mit den Eigenschaften, da das Ändern einer Eigenschaft alle Instanzen der Klasse betrifft
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 20-02-2003, 13:43   #4 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Auf private sind wir wohl alle Scharf - da werden wir wohl auf die nächste Flash Version warten müssen. Bis eine wirklich zufriedenstellende Lösung umgesetzt ist - die Jungs in SF arbeiten sich bereits dran!

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 20-02-2003, 13:44   #5 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
der Sinn ist mir mehr als klar..... da habe ich schön öfter neidvoll richtung C++ gekuckt....

wie meinst das mit den eigenschaften??? bei mir ist das nicht so...
oder versteh ich das Problem noch nicht....
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 20-02-2003, 13:56   #6 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
ActionScript:
  1. Class = function()
  2. {}
  3. function()
  4.     {
  5.         var _hidden = "hidden"
  6.         this.prototype.getHidden = function() {return _hidden;}
  7.         this.prototype.setHidden = function(n) {_hidden = n}
  8.     }.call(Class)
  9. xxx = new Class()
  10. yyy = new Class()
  11.  
  12. trace(xxx._hidden) // undefined
  13. trace(xxx.getHidden()) // hidden
  14. trace(yyy.getHidden()) // hidden
  15.  
  16. xxx.setHidden("versteckt")
  17.  
  18. trace(xxx._hidden) // undefined
  19. trace(xxx.getHidden()) // versteckt (richtig)
  20. trace(yyy.getHidden()) // versteckt (falsch)
  21.  
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 20-02-2003, 14:52   #7 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Private Eigenschaften kannst du so definieren:

ActionScript:
  1. function Class(){
  2.  
  3.    var hidden;
  4.  
  5.    this.getHidden = function(){
  6.            return hidden;
  7.    }
  8.  
  9.    this.setHidden = function(val){
  10.           hidden = val;
  11.    }
  12. }

mfg r.

Geändert von bokel (20-02-2003 um 16:05 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 20-02-2003, 15:30   #8 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
echt cool, mal wieder alles zu kompliziert gemacht

ActionScript:
  1. function Class()
  2. {
  3.     var hidden;
  4.     var doHidden = function(){trace(hidden)}
  5.    
  6.     this.getHidden = function(){
  7.         return hidden;
  8.     }
  9.     this.setHidden = function(val){
  10.         hidden = val;
  11.     }
  12.     this.doTheHiddenStuff = function()
  13.     {
  14.     doHidden()
  15.     }
  16. }
  17. Class.prototype.noAccessToHiddenStuff =function()
  18. {
  19.     trace(hidden)
  20. }
  21. xxx = new Class()
  22. yyy = new Class()
  23.  
  24. xxx.setHidden("hidden")
  25. yyy.setHidden("versteckt")
  26.  
  27. xxx.doHidden()
  28. xxx.doTheHiddenStuff() // hidden
  29. yyy.doTheHiddenStuff() // versteckt
  30. xxx.noAccessToHiddenStuff() // undefined
  31.  

Natürlich muss man sich darüber im klaren sein, dass das mehr Speicherplatz verbraucht, da die Methoden, die auf versteckte private Methoden/Eigenschaften zugreifen müssen, pro Instanz gespeichert werden und nicht nur ein Mal im Prototype
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!

Geändert von k7c4 (20-02-2003 um 15:36 Uhr)
k7c4 ist offline   Mit Zitat antworten
Alt 20-02-2003, 15:50   #9 (permalink)
www.kruesch.de
 
Benutzerbild von flory
 
Registriert seit: Feb 2002
Beiträge: 1.057
bokel, bei Dir ist noch der Wurm drin:
ActionScript:
  1. this.setHidden = function(val){
  2.        this.hidden = val;
  3. }
mit this .hidden erschaffst Du ja eine ganz normale Property.

das ganze ist nicht neu und schon für javascript
hinlänglich beschrieben:
http://www.crockford.com/javascript/private.html
auch sehr interessant:
http://www.crockford.com/javascript/javascript.html

wenn AS nicht die leidige Beschränkung der Rekursion
auf 256 Stufen hätte, wäre es eine tolle funktionale
Programmiersprache.

Sonnige Grüsse
Florian
__________________
www.planet-xaml.net
flory ist offline   Mit Zitat antworten
Alt 20-02-2003, 16:11   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Was denn, wo denn ?



Btw. bisher habe ich diese Möglichkeit nicht vermisst und
werde wohl auch weiterhin glücklich sein, ohne sie zu benutzen

Die 256 Rekursionsstufen-Beschränkung finde ich da schon
fieser, das kommt mir fast wie eine Amputation vor.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 20-02-2003, 17:55   #11 (permalink)
www.kruesch.de
 
Benutzerbild von flory
 
Registriert seit: Feb 2002
Beiträge: 1.057
wohl wahr!
Amputation ist das richtige Wort!

Sauerei
__________________
www.planet-xaml.net
flory ist offline   Mit Zitat antworten
Alt 20-02-2003, 19:39   #12 (permalink)
wolter.biz
 
Benutzerbild von wolter
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 3.395
Zitat:
Geschrieben von bokel
Was denn, wo denn ?



Btw. bisher habe ich diese Möglichkeit nicht vermisst und
werde wohl auch weiterhin glücklich sein, ohne sie zu benutzen

Die 256 Rekursionsstufen-Beschränkung finde ich da schon
fieser, das kommt mir fast wie eine Amputation vor.

mfg r.
aber dank der rekursions-beschränkungen dürfen informatik-kennende ja glänzen und schöne stacks aufbauen. wäre doch sonst alles viel zu einfach. ist nur ulkig, dass dann umfangreich algorithmen durch die bildrate gesteuert werden. na gut, ist nur spass...

gruss,

sascha.
wolter ist offline   Mit Zitat antworten
Alt 20-02-2003, 20:32   #13 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
Die Beschränkung war sicherlich eine Idee von dem Programmierer, der keine Lust hat AS zu optimieren.
Und da ihm langsam zu viel einzugrenzen gibt, lässt er gleich Schleifen Schleifen sein.
Auch große Geschwindigkeitverluste merkt man bei DreamWeaver.
Gnut ist offline   Mit Zitat antworten
Alt 20-02-2003, 20:51   #14 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Obwohl man prinzipiell jeden rekursiven Algorithmus zu einem
iterativen Algorithmus umbauen kann, weil ja unsere Computer
schliesslich auch iterativ funktionieren, ist das rein praktisch
gesehen oft nicht zu machen, weil der Code dadurch zu
komplex wird.

Wer möchte, kann sich ja mal mit einer einfachen
Depth-First-Suche vergnügen:

ActionScript:
  1. // Ausgehend von einem MovieClip werden
  2. // alle darunter hängenden Clips und Unterclips
  3. // ausgegeben. Dabei wird zuerst in die Tiefe
  4. // gesucht.
  5. function traverse(mc){
  6.       trace(mc);
  7.       for(var i in mc){
  8.            if(typeof mc[i] == 'movieclip') traverse(mc[i]);
  9.       }
  10. }
  11. travsere(_root);

Wer schreibt eine iterative Version ?

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 21-02-2003, 00:11   #15 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Ach jungs macht euch mal da keine Sorgen ich bin sicher Flash (AcrionScript) wird mit jeder Version erwachsener. Wär hätte noch vor einigen Jahren gedacht, dass man diese Grenze überhaupt erreicht.

Wie auch was sollte man auch mit mehr als 256 in Flash 4.

Ich mach mir da keine Sorgen. Das wird schon! Bis dahin werden wir ja mit reichlich workarounds beglückt oder müssen selber ran.

Liebe Grüsse
Matze K.
Madokan 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:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele