Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-01-2006, 14:34   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 60
Unterstrich bei Objekteigenschaften

Hi Leute,
ich versuche grade, ActionScript zu lernen und bin dabei auf etwas gestoßen, was ich nicht verstehe. Um die Eigenschaften eines Balls festzulegen, benutzt der Autor meines Buchs die Anweisung this.radius = 0. Später allerdings benutzt er einen Unterstrich: this._radius = 0. Nun wollte ich fragen, ob beide Schreibweisen zulässig sind oder ob der Autor einen Fehler gemacht hat. Vielen Dank für eure Hilfe.
mellon ist offline   Mit Zitat antworten
Alt 05-01-2006, 14:39   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Willkommen im Forum.

Ein Unterstrich vor dem Namen einer Variable deutet heutsotage eine private Variable an, d.h. eine Variable, die nicht von außen gesetzt werden sollte, sondern nur über entsprechende Methoden (setRadius(...) z.B.) oder über Getter (radius = ...).
Bei alten Eigenschaften, wie z.B. MovieClip._x gilt dies jedoch nicht, was dort der „_“ bedeuten soll wurde hier schon mehrmals erfolglos diskutiert.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 05-01-2006, 14:45   #3 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Das mit dem Unterstrich ist guter Stil.
Ich denke das ist ein Flüchtigkeitsfehler.

Man kann Eigenschaften jedoch definieren wie man will.
Wenn Du ein Objekt erstellst, das Eigenschaften und
Methoden hat, legst Du den Namen fest. Da ist es
gleich ob Du einen Unterstrich davor machst oder nicht.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 05-01-2006, 14:58   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 60
Unterstrich Teil 2

Danke für die schnell Antwort, aber eins versteh ich immer noch nicht:

Ich erstelle einen neuen Konstruktor namens Ball:

function Ball (radius) {
this.radius = radius;
}

Das "radius" in Klammern hinter "function Ball" ist nach meiner Logik eine Variable, die in der Funkton selbst den Wert von radius der Eigenschaft this.radius zuweist und kann deshalb auch jeden anderen Namen tragen heißen. Das "this.radius" in der Funktion ist aber doch keine Variable, denn "radius" muss doch von Action.Script schon vorher als "halber Durchmesser eines Kreises" definiert sein. Deshalb verstehe ich nicht, dass ich dies einfach in _radius ändern kann. Ich hoffe, ich konnte mein Problem verständlich machen. (Bemerkung: Der Autor benutzte diese andere Form mit Unterstrich im Zusammenhang mit der Methode addProperty, ich dachte, vielleicht könnte es von Bedeutung sein).
mellon ist offline   Mit Zitat antworten
Alt 05-01-2006, 15:16   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Flash hat keine Ahnung was „radius“ ist, geschweige denn, was ein Kreis ist

addProperty fügt getter und setter zu einem Objekt hinzu.

D. H. in diesem falle hat ein Objekt (z.B. kreis) eine Eigenschaft, sagen wir z.B. radius. Der Wert dieser Eigenschaft wird in einer (privaten) Variable _radius gespeichert.
Allerdings gibt es einiges zu tun, wenn man diesen Radius ändert, z.B. die Größe eines Kreises muss geändert werden. Deshalb reicht es nicht, wenn man zum ändern einfach schreibt:
PHP-Code:
kreis._radius 10
Damit hätte zwar die Variable _radius den den neuen Wert, die Größe des MovieClips auf der Bühne würde aber nicht angepasst.
Für solche Fälle gibt es getter und setter; sie können mit der Funktion addProperty erstellt werden. (in AS2 allerdings wesentlich eleganter direkt in einer Klasse).
Damit sähe das ganze dann wie folgt aus:
PHP-Code:
kreis.addProperty("radius"kreis.getRadiuskreis.setRadius);
kreis.radius 10
Nun würde kreis.setRadius ausgeführt, und bekommt als Parameter eine 10 übergeben. Die getter und setter könnten dann beispielsweise so aussehen:
PHP-Code:
kreis.setRadius = function(newRadius) {
this.mc._width mc._height newRadius;
this._radius = new Radius;
};

kreis.getRadius = function() {
return 
this._radius;

__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 05-01-2006, 15:42   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 60
Es ist zwar immer noch alles sehr verwirrend, aber dennoch um einiges klarer als vorher. Deshalb noch mal vielen Dank!!!
mellon 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 08:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele