| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Feb 2004
Beiträge: 10
| funktion anhalten
Also Ich habe eine AS das Funktionen definiert und ein As auf einem Mc der die funktionen ansteuert. Das ganze soll eine navigation ergeben die über diese funktionen funktionieren soll. Mein Problem ist wenn ich in dem Bereich bin, den ich mir anschauen möchte, dann muß ich die funktionen anhalten können, quasi das bild einfrieren. Es soll also einen button geben der das ganze anhält und loslässt. Hier mal die zwei scripts: // Ursprungskoordinatenfunktion movieclip.prototype.getOrigin = function() { targetX = startX; targetY = startY; targetXs = startXs; targetYs = startYs; }; // Zielkoordinatenfunktion movieclip.prototype.getTarget = function(factor) { targetX = startX+(startX-_parent._xmouse)*factor; targetY = startY+(startY-_parent._ymouse)*factor; targetXs = startXs*factor; targetYs = startYs*factor; }; // Zoomfunktion movieclip.prototype.zoom = function(delay, targetX, targetY) { difX = targetX-_x; difY = targetY-_y; difXs = targetXs-_xscale; difYs = targetYs-_yscale; _x += (difX/delay); _y += (difY/delay); _xscale += difXs/delay; _yscale += difYs/delay; }; // stop(); und das auf dem MC: onClipEvent (load) { startX = _x; startY = _y; startXs = _xscale; startYs = _yscale; getTarget(5); } onClipEvent (mouseUp) { getTarget(2.3); pressed = true; } onClipEvent (mouseDown) { getOrigin(); pressed = false; } onClipEvent (mouseMove) { if (pressed) { getTarget(2.3); } } onClipEvent (enterFrame) { zoom(15, targetX, targetY); } auf eines bin ich schon draufgekommen nur ist es viel zu hart, es friert das bild ein aber ich weis nicht wie ich es dann wieder zum laufen bring. on (release){ zoom = false; } |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Münster
Beiträge: 30
|
Hi PIU-5876, ich weiß jetzt eigentlich nicht so genau, was du eigentlich erreichen willst, aber wenn ich dich richtig verstehe willst du die Funktion die du onEnterFrame aufrufst pausieren lassen. Dazu könnte es hilfreich sein, wenn du das Script auf dem MC umstellst: onClipEvent (load) { ... this.onEnterFrame = function(){ zoom(15, targetX, targetY); } } dann hast du den Aufruf in einer Funktion namens "onEnterFrame", die du auch ansprechen kannst, das geht bei der anderen Art mit onClipEvent(enterFrame) leider nicht. dann könnten dir diese Prototypen weiterhelfen: MovieClip.prototype.pauseEnterFrame = function(){ this.remEnterFrame = this.onEnterFrame; delete this.onEnterFrame; } MovieClip.prototype.restartEnterFrame = function(){ this.onEnterFrame = this.remEnterFrame; delete this.remEnterFrame; } pauseEnterFrame macht eine Kopie der onEnterFrame Funktion und löscht diese anschließend. In deinem Fall das Zoomen hört auf. restartEnterFrame stellt den Ursprungszustand wieder her, das Zoomen geht weiter. Mir ist übrigens aufgefallen, das sich dein Script unterschiedlich verhält, wenn du es in Flash 5,6 oder 7 exportierst. Ohne das überprüft zu haben vermute ich mal dass es an der Variableninitialisierung liegt. |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2004
Beiträge: 10
|
Danke für die Hilfe, zum leichteren Verständniss hab ich das swf ins netz getan http://members.aon.at/kogelnig/piu/test und zu deiner antwort, wenn ich das richtig verstanden hab kommen die pause und die restart funktion zu den anderen funktion ( oder sonst wo hin) die onEnterFrame funktion mit dem clipevent auf den mc die funktionen pause und restart sollte ich dann über einen button ansteuern können. Hab ich das so richtig verstanden? P.S.:hab das so gleich ausprobiert diese Punkte bei der onENterFrame funktion was bedeuten die ich krieg nämlich eine Fehlermeldung Geändert von PIU-5876 (24-02-2004 um 00:48 Uhr) |
| | |
| | #4 (permalink) | |||
| Neuer User Registriert seit: Feb 2002 Ort: Münster
Beiträge: 30
|
Hi, Zitat:
Zitat:
onClipEvent(enterFrame){ hier dein code } sondern so: onClipEvent (load) { this.startX = this._x; this.startY = this._y; this.startXs = this._xscale; this.startYs = this._yscale; this.getTarget(5); this.onMouseUp = function() { this.getTarget(2.3); this.pressed = true; } this.onMouseDown = function() { this.getOrigin(); this.pressed = false; } this.onMouseMove = function() { if (this.pressed) { this.getTarget(2.3); } } this.onEnterFrame = function() { this.zoom(15, targetX, targetY); } } die "..." sollten heißen: hier dein bisheriger Code im neuen Stil, da hab ich mich wohl etwas sehr knapp ausgedrückt. Zitat:
Mal angenommen dein MC ist _root.meinMC, dann kannst du die onEnterFrame-Funktion mit Buttons z.B. so anhalten/starten: auf dem "Pause"-Button: on(release){ _root.meinMC.pauseEnterFrame(); } auf dem "Restart"-Buttom: on(release){ _root.meinMC.restartEnterFrame(); } | |||
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Feb 2004
Beiträge: 10
|
Das haut einfach nicht hin. Ich habs ja verstanden gute Idee setze die clipevents wieder in funktionen um sie dann ansteuern zu können. Aber es läuft einfach nicht an. Hier mal das ganze fla vielleicht hilft das meine Fehler zu finden. ( Die funktionen auf dem mc sind hier wieder wie früher hab, hab mir gedacht dann sieht man wenigstens was) Ciao PIU |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Münster
Beiträge: 30
|
Hi PIU-5876 das haut schon hin, allerdings nicht für den Export nach Flash 5, denn da gab es die Möglichkeit mit this.onEnterFrame = function(){irgendein code} noch nicht. Wie ich schon in der ersten Antwort bemerkt hatte, verhält sich dein Script unterschiedlich, wenn du es in verschiedene Flash Version exportierst. Da wir im MX 2004 Forum sind bin ich mal davon ausgegangen, das dus nicht umbedingt für Flash 5 schreibst. Bei Flash 5 müßtest du also einen anderen Lösungsansatz wählen! z.B.: mit den Buttons eine Variable auf true oder false setzten und in der onClipEvent(enterFrame) Function abfragen. In Flash 6 (MX) mußt du this. vor die Variablen- oder Eigenschaften Name schreiben und in Flash MX 2004 darfst du nicht movieclip.prototype schreiben, sondern MovieClip.prototype. Außerdem ist "zoom" in Flash MX 2004 ein geschütztes Wort, das du ebenfalls nicht verwenden darfst. Ich habe jetzt mal eine Version gemacht, die sowohl in Flash MX, als auch in MX 2004 läuft: angucken: http://dev.muse.de/teststuff/navi56.html runterladen: http://dev.muse.de/teststuff/navi56.rar Ich habe die "pauseEnterFrame" und "restartEnterFrame" noch um eine Sicherheitsabfrage erweitert, so das jetzt keine Auswirkungen mehr hat, wenn du zuerst "restartEnterFrame" oder 2x hintereinander "pauseEnterFrame" drückst: MovieClip.prototype.pauseEnterFrame = function() { if(this.onEnterFrame){ this.remEnterFrame = this.onEnterFrame; } delete this.onEnterFrame; }; MovieClip.prototype.restartEnterFrame = function() { if(this.remEnterFrame){ this.onEnterFrame = this.remEnterFrame; } delete this.remEnterFrame; }; das Script auf dem MC habe ich wie beschrieben umgestellt und den prototype "zoom" in "zoomer" umgetauft. |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Feb 2002 Ort: Münster
Beiträge: 30
|
Nachtrag: bei den Fla das du online gestellt hast sind mir noch mehrere Fehler aufgefallen: du hattest meinen prototype verändert (rot markiert): MovieClip.prototype.pauseEnterFrame = function() { this.remEnterFrame = this.Stadt.onEnterFrame; delete this.Stadt.onEnterFrame; }; das ist falsch, da this bereits für den MC Stadt steht. Das ist ja gerade das schöne an prototypes, das man sie nicht an jeden einzelnen MC anpassen muss, sondern das sie für alle MCs gelten. im MC MCbutton schreibst du u.a.: movieclip.prototype.zoom.start; da weiß ich nicht was du erreichen wolltest. und movieclip.prototype.zoom = false; damit würdest du die Methode überschreiben, was zwar auch zur Folge hätte, das nicht mehr gezoomt wird, allerding könntest du die Methode danach auch nicht mehr verwenden. Ich würde mal gucken, ob im Forum nicht ein Tut oder ne Erklärung zur Verwendung von prototype gibt. |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Feb 2004
Beiträge: 10
|
Hei habs gerade selber hinbekommen schau mir dein script natürlich trotzdem noch an ist sicher viel schlauer als meins zeig dir aber was ich gemacht habe, es ist simple wie anton HUHUHUHU hab riesen Freude!!!! Das script vom MC für die zoom aktion: onClipEvent (enterFrame) { if (_root.controlvar == true) { this.zoom(15, targetX, targetY); } Für den Aktivier Knopf: on (release) { _root.controlvar = true; } Für den Deaktivier Knopf on (release) { _root.controlvar = false; } Zusätlich hab ich noch ein clipevent onLoad auf true gesetzt so fängts auch schon gleich richtig an. Hab ich agnz alleine rausgefunden, hat das irgendeinenhacken den ich noch nicht verstehe? HuHUHUHU freu mich immer noch |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Feb 2004
Beiträge: 10
|
Hab auch noch nen Nachtrag Bevor ich wieder anfang irgendwelchen mist zu scripten und du mein script ja schon kennst. Wie kann ich denn verhindern, daß sich der Mc über das Dokument hinaus bewegt. Dann wärs fast schon fertig mit den experimentellen Sachen den restlichen aufbau der Seite krieg ich ziemlich sicher ohne grosse Hilfe hin. Aber echt nochmal vielen Dank für die Hilfen ist echt anspornend zu sehen, daß sich wer um einen kümmert. Schau es geht http://members.aon.at/kogelnig/piu/test/ Geändert von PIU-5876 (24-02-2004 um 19:36 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |