Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-05-2004, 15:58   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
Zusätzliche Variablen im Objekt

Hallo miteinander, bitte nicht schlagen

Ich hoffe mir kann jemand helfen:

Und zwar habe ich ein MovieClip Objekt, für das ich 2 prototypes geschrieben habe (eine vershcieb das objekt nach links, eine nach rechts - mit variabler geschwindigkeit usw.).

nun bräuchte ich eine Möglichkeit beim erstellen eines neuen MovieClip Objektes den Wert zu speichern.

Sprich - Ich möchte den _x Wert des Objektes dauerhaft IM Objekt selber speichern.

Nochmals anders erklärt:
* Das Objekt wird erzeugt und hat jetzt einen bestimmten _x Wert (dafür sorge ich )
* Nun soll dieser Wert in irgendeiner Variable gespeichert werden.
* Nun wird das Objekt verschoben (_x verändert sich also)
* Nun hätte ich das Objekt wieder gern an der ursprünglichen Stelle
* Ich muss also _x wieder auf den Wert den ich (irgendwie) gespeichert habe, setzen.

Weiss einer grad zufällig wie das geht ?
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:15   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Wie erstellst du denn das Objekt?
Prinzipiell kannst doch den ursprünglichen x-Wert einfach in einer Property des Objekts abspeichern, so in der Art
ActionScript:
  1. this.origX = this._x;
Oder wie..?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 16:22   #3 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
hi . .ja . .genau das würde ich gerne tun ..

aber ich bekomme immer ein undefined ...

ich poste gleich mal die entsprechenden code - zeilen .. moment
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:24   #4 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
teil1:
das erstellen einer linie (nueer movieclip) und dann zuweisen von _x meiner Variable initialX

createThinLine = function (x1, y1, x2, y2, thickness, id) {
_root.createEmptyMovieClip("line"+id, id);
with (_root["line"+id]) {
lineStyle(thickness, 0x000000, Math.random()*100);
moveTo(0, 0);
lineTo(0, 400);
_x = x1;
_y = y1;
initialX = x1;
initialY = y1;
}
};

Teil 2: Ausleseversuch:

MovieClip.prototype.close = function(speed, xMin, xMax, xCur) {
this.onEnterFrame = function() {
trace(this._x + " -- " + this.initialX);
...
...
...
};
};

beim trace bekomme ich für den ersten wert (this._x) das richtige (also die aktuelle position) aber für initialX bekomme ich immer undefined
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:33   #5 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ja woher soll denn die MovieClip-Klasse jetzt plötzlich was von initialX wissen, welches du in irgendeiner Funktion definierst...?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 16:36   #6 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
naja .. ich bastel mir doch eine instanz eines movieclips (namens line1)
dann kommt das "with line1" .. und da setze ich initialX

später greife ich wieder auf das line1 zu, und da kennt ers nicht mehr ..


oder hab ich da einen dnekfehler ? muss ich das irgendwie definieren dass es sowas gibt ?
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:47   #7 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Da seh ich in deinem Skript aber nix, dass du wieder auf line1 zugreifst...

Was du mit deinem Skript in etwa veranstaltest:
Du reißt ein Blatt Papier von einem Block ab und schreibst da was drauf.
Dann hoffst du, dass das, was du auf das lose Blatt geschrieben hast, auf allen Blättern des Blocks lesbar sein soll...
Soll heißen: deine MC-Instanz is völlig autonom, du kannst nicht "rückwärts" etwas auf die Klasse vererben.
Weißt du eigentlich, was du mit prototype machst?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 16:53   #8 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
das mit dem rückwärts vererben dürfte wahr sein ...

das prototype gibt einem bestehenden objekt ja eine neue methode hinzu .. sprich ich kann auf eine Instanz des MovieClip Objekts dann open bzw. close ausführen (habe da 2).


wie kann ich actionscript oder flash sagen, dass das movieclip objekt auch eine Variable namens initialX haben soll ?

HAst da vielleicht einen Beispiel Code ? Muss ich mir hierzu ein neues Objekt machen und dieses von MovieClip ableiten ?
Kann das Flash überhaupt (bzw. actionscript)
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 17:14   #9 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Nicht ganz... Object.prototype weist einer Klasse neue Methoden und Eigenschaften zu, nicht einem Objekt.

Alles, was du in Sachen Positionierung, _x, _y etc. unternimmst, findet aber auf Instanzebene statt. D.h. die Klasse kann nix davon wissen, wo "ihre Kinder sich gerade rumtreiben"...
Und zu deiner Frage
Zitat:
Geschrieben von somnatic
wie kann ich actionscript oder flash sagen, dass das movieclip objekt auch eine Variable namens initialX haben soll ?
Indem du sie dem Objekt, sprich dem MovieClip selber zuweist, für jede Instanz einzeln. Da braucht die Klasse nix davon zu wissen...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 17:19   #10 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
ah . .ich glaub wir reden aneinander vorbei ...

ich will ja jeder einzelnen Instanz diese Variable initialX geben, damit ich weiss wo sich jede Instanz herumtreibt.

sprich:
in java / C# / C++ isses so, dass zuerst eine Klasse definiert wird (welche Variablen und Methoden es gibt) und dann die Instanzen instanziert werden.

Diesen Mechanismus hätte ich eben gern in Actionscript - nur, dass:

* Meine neue Klasse alles von MovieClip hat (also vererbung / inheritance)
* ich eigentlich nur ein Zusätzliches Feld brauche (dieses initialX).

Dieses Feld soll nun beim instantiieren initalisiert werden und soll dann immer gleich bleiben und nur ausgelesen werden.

Kann ich das irgendwie machen ?
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 17:43   #11 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Sowas geht z.B.:
ActionScript:
  1. MovieClip.prototype.setOrigX = function() {
  2.     this.origX = this._x;
  3. };
  4. MovieClip.prototype.getOrigX = function() {
  5.     return this.origX;
  6. };
  7. mc.setOrigX();
  8. mc.onPress = function() {
  9.     this.startDrag();
  10. };
  11. mc.onRelease = function() {
  12.     this.stopDrag();
  13.     trace(this.getOrigX());
  14. };
Aber auch hier musst die Methode für jede Instanz aufrufen, d.h. du könntest auch gleich für jede Instanz origX abspeichern...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 17:45   #12 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
ich drücks nochmal etwas anders aus ..

genauso wie ich meinem movieclip sage, dass jede isntanz ab sofort 2 zusätzliche methoden hat (open/close):
MovieClip.protoype.open = function() ...

würde ich flash gerne sagen, dass jeder movieclip ab sofort auch zusätzlich eine Variable kennen muss (namens initialX). Gibt es sowas wie:
MovieClip.prototype.initalX = var ()
? ich hätts bisher eben noch nirgends gesehen ..
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 17:51   #13 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
> du könntest auch gleich für jede Instanz origX abspeichern

genau das will ich ...

jede instanz soll ein eigenes origX haben ..


mit deiner lösung kommt bei mir leider auch wieder nur "undefined"
somnatic ist offline   Mit Zitat antworten
Alt 31-05-2004, 18:11   #14 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ohne with geht dein Code:
ActionScript:
  1. MovieClip.prototype.close = function(speed, xMin, xMax, xCur) {
  2.     this.onEnterFrame = function() {
  3.     trace(this._x + " -- " + this.initialX);
  4.     };
  5. };
  6. //
  7. createThinLine = function (x1, y1, x2, y2, thickness, id) {
  8.     _root.createEmptyMovieClip("line" + id, id);
  9.     _root["line" + id].lineStyle(thickness, 0x000000, Math.random() * 100);
  10.     _root["line" + id].moveTo(0, 0);
  11.     _root["line" + id].lineTo(0, 400);
  12.     _root["line" + id]._x = x1;
  13.     _root["line" + id]._y = y1;
  14.     _root["line" + id].initialX = x1;
  15.     _root["line" + id].initialY = y1;
  16. };
  17. createThinLine(100, 0, 150, 150, 1, 1);
  18. line1.close();
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist gerade online   Mit Zitat antworten
Alt 31-05-2004, 18:16   #15 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 25
wow . .danke ...

ich bin dafür jetzt endgültig verwirrt ... ...

warum gehts mit with nicht und wenn man direkt das angibt gehts ?!?

dank dir VIELMALS ..
somnatic 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 12:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele