Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-08-2003, 14:20   #1 (permalink)
aka The Addict
 
Benutzerbild von Martys
 
Registriert seit: Dec 2002
Ort: Bochum
Beiträge: 150
Question Funktionen verschachteln?

Hallo,

habe leider ein kleines Problem mit Funktionen. Habe vorher nocht nicht mit ihnen gearbeitet.

Habe einen MC der mit einem Regler horizontal gescrollt wird. Beim Loslassen des Reglers springt der MC an eine gewisse Position, ebenso der Regler.
Folgende Funktion dafür:

this.regler1.regler.onRelease = function() {
if (this._x>=0 && this._x<=40) {
_root.streifen._x=50;
_root.regler1.regler._x=0;
} else if (this._x>=41 && this._x<=121) {
_root.streifen._x=-426;
_root.regler1.regler._x=81;
} else if (this._x>=122 && this._x<=202) {
_root.streifen._x=-902;
_root.regler1.regler._x=162;
} else if (this._x>=203 && this._x<=283) {
_root.streifen._x=-1378;
_root.regler1.regler._x=243;
} else if (this._x>=284 && this._x<=324) {
_root.streifen._x=-1854;
_root.regler1.regler._x=324;
}
}

Funktioniert auch wunderbar.

Nun möchte ich aber, dass die Bewegung nicht so abgehackt ist, sondern der MC zu den Seiten ein wenig nachschwingt.
Bei Flashstar gab es ein Tut dazu, allerdings komme ich nicht darauf, wie ich die Funktionen so kombinieren kann, das es funktioniert.

Folgendes Script im Tut:

MovieClip.prototype.elasticMove = function(obj, besch, friktion) {
this.tempo += (obj - this._x) * besch;
this.tempo *= friktion;
this._x += this.tempo;
}

MC.ziel = 150;

MC.onMouseDown = function() {
this.ziel = _root._xmouse;
}

MC.onEnterFrame = function() {
this.elasticMove(this.ziel, .5, .6);
}

Mein Ansatz war folgender:

MovieClip.prototype.elasticMove = function(obj, besch, friktion) {
this.tempo += (obj - this._x) * besch;
this.tempo *= friktion;
this._x += this.tempo;
}

streifen.ziel = 50;

regler1.regler.onRelease = function() {
this.ziel = hier müsste meines Erachtens die Positionsabfrage rein, ich weiß aber nicht wie
}

streifen.onEnterFrame = function() {
this.elasticMove(this.ziel, .5, .6);
}


Dannke schon mal für eure Hilfe und Anregungen.

Martys

Download der Datei
Martys ist offline   Mit Zitat antworten
Alt 04-08-2003, 16:33   #2 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
_root.regler.regler1._x
Hast du doch selber in deinem Scipt drinnen.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 05-08-2003, 10:49   #3 (permalink)
aka The Addict
 
Benutzerbild von Martys
 
Registriert seit: Dec 2002
Ort: Bochum
Beiträge: 150
habe viel rumprobiert, bekomme es aber nicht zum laufen.

Mein jetziger Ansatz:

this.regler1.regler.onRelease = function() {
if (this._x>=0 && this._x<=40) {
_root.streifen._x=50;
_root.regler1.regler._x=0;
} else if (this._x>=41 && this._x<=121) {
_root.streifen._x=-426;
_root.regler1.regler._x=81;
} else if (this._x>=122 && this._x<=202) {
_root.streifen._x=-902;
_root.regler1.regler._x=162;
} else if (this._x>=203 && this._x<=283) {
_root.streifen._x=-1378;
_root.regler1.regler._x=243;
} else if (this._x>=284 && this._x<=324) {
_root.streifen._x=-1854;
_root.regler1.regler._x=324;
};
this.ziel = _root.streifen._x; //will hier den x-Wert des zu scrollenden MCs speichern, um auf diesen in der unteren Funktion zuzugreifen //
}

MovieClip.prototype.elasticMove = function(obj, besch, friktion) {
this.tempo += (obj - this._x) * besch;
this.tempo *= friktion;
this._x += this.tempo;
}

streifen.onEnterFrame = function() {
this.elasticMove(this.ziel, .5, .6);
}

Komme echt nicht weiter und verzweifle langsam.

Danke schon mal

Martys

aktuelle Version zum Download
Martys ist offline   Mit Zitat antworten
Alt 05-08-2003, 11:13   #4 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Das streifen.onEnterFrame funkt irgendwie nicht. Machs so:
ActionScript:
  1. _root.onEnterFrame = function() {
  2.     streifen.elasticMove(this.ziel, .5, .6);
  3. }
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 05-08-2003, 11:53   #5 (permalink)
aka The Addict
 
Benutzerbild von Martys
 
Registriert seit: Dec 2002
Ort: Bochum
Beiträge: 150
Vielen Dank schon mal für die Hilfe.

Jetzt "wabbert" der MC, leider kann er nicht über seine gesamte Breite gescrollt werden und er srpingt immer in den ersten Bereich zurück.
Weiter wabbert der MC auch, wenn ich den Regler anfasse (beim onPress), er soll aber erst wabbern, wenn ich den Regler loslasse (beim regler1.regler.onRelease) und der MC an seine durch die if-Abfrage bestimmte Position springt.

Aktuelle Datei zum Download

Martys
Martys ist offline   Mit Zitat antworten
Alt 05-08-2003, 12:27   #6 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Hallo,
ich hab die Datei jetzt noch nicht runtergeladen, aber ich denke Du willst es so:
ActionScript:
  1. MovieClip.prototype.elasticMove = function(obj, besch, friktion) {
  2. this.tempo += (obj - this._x) * besch;
  3. this.tempo *= friktion;
  4. this._x += this.tempo;
  5. }
  6. this.regler1.regler.onRelease = function() {
  7.     stopDrag();
  8. if (this._x>=0 && this._x<=40) {
  9. _root.streifen.ziel=50;
  10. _root.regler1.regler._x=0;
  11. } else if (this._x>=41 && this._x<=121) {
  12. _root.streifen.ziel=-426;
  13. _root.regler1.regler._x=81;
  14. } else if (this._x>=122 && this._x<=202) {
  15. _root.streifen.ziel=-902;
  16. _root.regler1.regler._x=162;
  17. } else if (this._x>=203 && this._x<=283) {
  18. _root.streifen.ziel=-1378;
  19. _root.regler1.regler._x=243;
  20. } else if (this._x>=284 && this._x<=324) {
  21. _root.streifen.ziel=-1854;
  22. _root.regler1.regler._x=324;
  23. }
  24. }
  25.  
  26. streifen.onEnterFrame=function(){
  27.     this.elasticMove(this.ziel,.5,.6);
  28. }



Gruß

alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 05-08-2003, 12:59   #7 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
ok,
man kommt nicht umhin, den onEnterFrame immer wieder zu entfernen (das ist eh besser ):
ActionScript:
  1. MovieClip.prototype.elasticMove = function(obj, besch, friktion) {
  2.         this.tempo += (obj - this._x) * besch;
  3.         this.tempo *= friktion;
  4.         this._x += this.tempo;
  5.         if(Math.abs(this.tempo)<0.1){
  6.             this._x=obj;
  7.             delete(this.onEnterFrame);
  8.         }
  9. }
  10. this.regler1.regler.onRelease = function() {
  11.         if (this._x>=0 && this._x<=40) {
  12.                 _root.streifen.ziel=50;
  13.                 _root.regler1.regler._x=0;
  14.         } else if (this._x>=41 && this._x<=121) {
  15.                 _root.streifen.ziel=-426;
  16.                 _root.regler1.regler._x=81;
  17.         } else if (this._x>=122 && this._x<=202) {
  18.                 _root.streifen.ziel=-902;
  19.                 _root.regler1.regler._x=162;
  20.         } else if (this._x>=203 && this._x<=283) {
  21.                 _root.streifen.ziel=-1378;
  22.                 _root.regler1.regler._x=243;
  23.         } else if (this._x>=284 && this._x<=324) {
  24.                 _root.streifen.ziel=-1854;
  25.                 _root.regler1.regler._x=324;
  26.         }
  27.         _root.streifen.onEnterFrame=function(){
  28.             this.elasticMove(this.ziel,0.5,0.6);
  29.         }
  30. }
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 05-08-2003, 13:12   #8 (permalink)
aka The Addict
 
Benutzerbild von Martys
 
Registriert seit: Dec 2002
Ort: Bochum
Beiträge: 150
Tausend Dank, es funktioniert!!!

Leider verstehe ich nicht so genau warum, könntest Du das eventuell erläutern oder mir Links zum Nachlesen nennen?

Gruß

Martys
Martys ist offline   Mit Zitat antworten
Alt 05-08-2003, 15:07   #9 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Das Wabbern wird im onEnterFrame ausgeführt und wenn das onEnterFrame gelöscht ist, dann wabbert auch nix. Also, erst bei onRelease das onEnterFrame setzen und wenn das Tempo fast ß ist, dann das onEnterFrame löschen.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 05-08-2003, 15:47   #10 (permalink)
aka The Addict
 
Benutzerbild von Martys
 
Registriert seit: Dec 2002
Ort: Bochum
Beiträge: 150
Oh nein, dies ist mir jetzt erst aufgefallen:

Nach dem Aufruf des Films kann ich den MC über den Regler scrollen. Dabei durchläuft er auch alle fünf Bereiche. Wenn ich den Regler loslasse, wabbert der MC auch an die abgefragte x-Position.
Dies funktioniert auch genau so, wie ich mir es vorgestellt habe.

Nun das Problem:

Wenn ich den Regler erneut klicke um den MC zu scrollen, scrollt dieser nur über ca. 2 Bereiche. Beim Loslassen des Reglers wabbert (sehr stark) der MC zwar an die abgefragte x-Position, aber er sollte über seine gesamte Breite scrollbar sein.

Dieses Problem tritt nicht immer beim zweiten scrollen auf, aber es tritt immer unter den ersten fünf Scrollvorgängen auf.

Bei relativ schnellem scrollen tritt das Problem auch auf.

Woran könnte das liegen?

Martys

Aktuelle Datei

Geändert von Martys (05-08-2003 um 15:52 Uhr)
Martys 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 13:54 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele