| |||||||
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: Jan 2002
Beiträge: 82
| onEnterFrame Problem
Hallo an euch lieben hilfsbereiten Leute Ich hba ein Verständnisproblem glaub ich mit onEnterFrame. Vielleicht kann mir jemand etwas Licht ins Dunkel bringen. Ich dachte eigentlich, dass ich die onEnterFrame Funktion brauche, wenn ich will, dass bestimmte Befehle laufend aktualisiert werden. Bs: Ich hab ein Skript geschrieben, wo ein Bild (ein sehr langes Bild) durch den Bildschirm läuft (von rechts nach links). Wenn ein Button gedrückt bleibt, beschleunigt das Bild und hält dann die Geschwindigkeit. Das funktioniert auch. Da die onPress bedingung die ganze zeit über erfüllt ist, benötige ich keine for schleife sondern nur eine if abfrage. nun soll bei auslassen der Funktion das Bild abbremsen und danach zum Stehen kommen. Da die onRelease Bedingung ja nur einmal ausgeführt wird, brauch ich da eine for-Anweisung. Aber das Abbremsen funktioniert nicht. es geht einfach viel zu schnell. die forschleife wird scheinbar fertig gerechnet und erst danach angezeigt. Somit bremst mein Bild nicht sondern steht prompt und macht noch einen Sprung nach vorne. Code: on (press) {
this.onEnterFrame = function() {
if (_root.speed < 20){_root.speed++}
_root.zwiebel._x=_root.zwiebel._x-_root.speed;
}
}
on (release) {
for(_root.speed = 20; _root.speed >=1 ; _root.speed=_root.speed/1.0075){
_root.zwiebel._x=_root.zwiebel._x-_root.speed;
}
_root.speed = 0;
delete this.onEnterFrame;
} die Bremse (1,0075) hab ich auf Werte zwischen 2 und 1,0000... geändert ohne einen Unterschied fest zu stellen. |
| | |
| | #2 (permalink) |
| nobody is perfect Registriert seit: Apr 2002 Ort: Bremen
Beiträge: 3.049
|
bei deinem Code Beispiel würde das dann so aussehen PHP-Code:
__________________ FF Unterstützen! Erste Hilfe! häufig gestellten Fragen ...................... ............... ................................ |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
das ereignis (event) onPress passier nur einmal, wenn du den maus-button im button-bereich nieder drückst. das ereignis onRelease findet nur einmal statt, wenn du den maus-button innerhalb des button-bereiches los lässt. es gibt da noch das onReleaseOutside onEnterFrame hingegen wird ständig ausgeführt. this.onEnterFrame = kann man als variable ansehen, in die man alles mögliche (natürlich zeiger auf funktionen) reinschreiben kann. wenn da garnichts drin steht, dann passiert halt nichts, wenn ein zeiger auf eine funktion drin steht, dann wird diese jedesmal ausgeführt. im beispiel von Decrone wird mit onPress ein enterframe gestartet, das ein speed erhöht. mit onRelese wird dieses mit einem anderen enterframe überschrieben, das speed wieder verzögert und sich danach selbst löscht. ergänze ein paar trace("hallo"); befehle, dann kannst du sehen, welcher programmteil wann ausgeführt wird. bzw. mit dem debugger, der hier aber nicht so sinnvoll einzusetzen ist. dennoch probiere auch mal den debugger aus.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (22-11-2008 um 18:13 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Dec 2003 Ort: Köln
Beiträge: 44
|
Ich häng mich mal in diesem Thread an. ich habe eine Zeitschleife in der ich nach bestimmten Zeiten verschiedene Ereignisse abrufe. Am Ende der Zeit soll sich das onEnterFrame Event löschen. Einen Trace Befehl den ich zusammen mit dem delete.onEnterFrame in eine Zeile gepackt habe wird aber nicht aufgeführt. heisst das das mein on EnterFrame Event endlos weiterläuft? Und wie müsste ich es richtig einbauen um es zu löschen. PHP-Code: |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Dec 2003 Ort: Köln
Beiträge: 44
|
Ok ich habs rausgefunden. In einer switch-case anweisung habe ich einen anderen Timer this.onEnterFrame gestartet. Deshalb habe ich mir den anderen mit delete this.onEnterframe zerschossen. Die Lösung war folgende: Einfach dem onEnterFrame Event einen mc zuweisen das sich die Timer nicht in die Quere kommen. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |