Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-03-2006, 23:43   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 3
Exclamation alt: onEnterFrame, neu: Interval - aber wie?

Hallo,

wenn ich früher z.B. einen MC über einen Button geschmeidig drehen lassen wollte, habe ich die ganze Zeit eine onEnterFrame Funktion auf dem MC laufen lassen und dann über den Button eine Variable geändert, welche in der onEnterFrame Funktion war. Ich glaube aber, dass das schon lange nicht mehr zeitgemäß ist und es Performance-sparender mit einem Interval geht. Nur wie? Von der Theorie hab ich es (halbwegs) verstanden, aber ich bekomme den Code nicht zusammen ...

Danke!
Tebis ist offline   Mit Zitat antworten
Alt 08-03-2006, 00:42   #2 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
Falsch! - aber erstmal hi und willkommen im FF
also enterframe ist überhaupt nicht veraltet, eher sogar das gegenteil.

für das enterframe ist ab dem 6er player sehr gut und einfach zu händeln


setinterval ist für grafische animationen nicht sonderlich geeignet (trotzt updateAfterEvent)
von daher sind je nach anforderungen enterframes schon eine wichtige und nützliche sachen
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 08-03-2006, 09:59   #3 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
PHP-Code:
var intervalID:Number setInterval(meineFunktion,1);
function 
meineFunktion(){
    
ball._x += 10;
        if(
ball._x >= 100)
             
clearInterval(intervalID);

mojave ist offline   Mit Zitat antworten
Alt 08-03-2006, 10:28   #4 (permalink)
_Thomas_
Gast
 
Beiträge: n/a
Zitat:
Zitat von bloba
setinterval ist für grafische animationen nicht sonderlich geeignet (trotzt updateAfterEvent)
Also ich nutze setInterval für AS-basierte Tweens seit geraumer Zeit. Wieso sollten die nicht sonderlich geeignet sein?
  Mit Zitat antworten
Alt 08-03-2006, 10:44   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Weil Flash wohl oder übel intern immernoch auf Frames arbeitet, Intervalle sind nur ein Aufsatz, und eher langsamer als schneller, und zudem immernoch von Frames abhängig.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 08-03-2006, 10:59   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
und zudem immernoch von Frames abhängig.
Aber dafür gibt es doch das updateAfterEvent() somit wird doch die Grafik unabhängig der Framerate geupdatet.
Oder habe ich deine Aussage falsch verstanden?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 08-03-2006, 12:32   #7 (permalink)
_Thomas_
Gast
 
Beiträge: n/a
Zitat:
Zitat von Janoscharlipp
Weil Flash wohl oder übel intern immernoch auf Frames arbeitet, Intervalle sind nur ein Aufsatz, und eher langsamer als schneller, und zudem immernoch von Frames abhängig.
Das macht gar nichts. Bei geeigneter Framerate sind Intervalle zu ebenso flüssigen Animationen zu gebrauchen wie Framebasierte.
Hinzu kommt noch der Vorteil, dass Intervallbasierte Animationen unabhängig der Performance des jeweilig anzeigenden Systems, eben auch nur so lange dauern, wie sie sollen.

Vielleicht eine Grundsatzfrage..

[Erbsen zähl]
Übrigens ist die Framerate eines Flashfilms im Endeffekt der Bildwiederholfrequenz meiner GPU untergeordnet..
[/Erbsen zähl]

Gruß,
Thomas.
  Mit Zitat antworten
Alt 08-03-2006, 12:50   #8 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Wenn du eine sinnvolle Framerate wählst, kannst du problemlos festlegen, wie lange deine Animationen dauern sollen.

Die Verwendung von Intervallen mit updateAfterEvent für Animationen führt immer zu einem fetten Overhead, da das Bild dann einmal für die Intervalle, und einmal normal Frameweise neu gezeichnet wird.

Zitat:
Zitat von _Thomas_
[Erbsen zähl]
Übrigens ist die Framerate eines Flashfilms im Endeffekt der Bildwiederholfrequenz meiner GPU untergeordnet..
[/Erbsen zähl]
jaja ... und die Bildwiederholfrequenz hängt von der Geschwindigkeit der Erde ab.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 08-03-2006, 13:43   #9 (permalink)
_Thomas_
Gast
 
Beiträge: n/a
Zitat:
Zitat von Janoscharlipp
Wenn du eine sinnvolle Framerate wählst, kannst du problemlos festlegen, wie lange deine Animationen dauern sollen.
Aber eben nicht performanceunabhängig, da Framebasierend.

Zitat:
Die Verwendung von Intervallen mit updateAfterEvent für Animationen führt immer zu einem fetten Overhead, da das Bild dann einmal für die Intervalle, und einmal normal Frameweise neu gezeichnet wird.
Entschuldigung, aber - wer sprach hier von updateAfterEvent?? Benutze ich nie und habe ich auch noch nie benutzt..Meine Anis sind trotzdem flüssig..oder vielleicht grade deshalb..wer weiß..

Zitat:
jaja ... und die Bildwiederholfrequenz hängt von der Geschwindigkeit der Erde ab.
Ich wollts nicht sagen..

Letztendlich wollte ich nur da einschreiten, wo meines Erachtens nach Unfug erzählt wird..Populärer Unfug - aber immernoch Unfug, da es immer von mehreren Faktoren als nur einer AS-Methode abhängt, ob jeweiliges Etwas nun zu bestimmten Zwecken geeignet ist oder nicht..Genauso wie: "__proto__ ist AS1"..ja klar..schaut Euch mal die Referenz an...
Hier wird halt schnell mal die eigene Überzeugung - manchmal leider auch Resultat des eigenen Unwissens - zur allgemeingültigen Regel erhoben..ob das in einem Entwicklerforum so sinnvoll ist, wage ich zu bezweifeln.

Jeder soll doch das benutzen, was er will - aber nicht kategorisch Methoden als Falsch oder Unvorteilhaft darstellen, nur weil sie bei ihm bisher nicht funktioniert haben, oder weils eben Konsens ist..

Gruß,
Thomas.
  Mit Zitat antworten
Alt 08-03-2006, 14:16   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Am besten ist es doch wohl, wenn man sich klar macht, was sowohl das eine als auch das andere bedeutet. Dann muss man nicht raten, sondern kann sich bewusst für das eine oder das andere entscheiden.

1. Ein MovieClip kann nur einen onEnterFrame aber viele Intervalle haben
2. Ein onEnterFrame wird auf jeden Fall ausgeführt, selbst wenn die Performance es nicht zulässt. Ein Interval wird bei hoher Auslastung übersprungen.
3. Ein Interval ist nicht zwingend synchron zur Framerate. Wenn es schneller läuft als die Framerate, verpuffen einige Animationschritte möglicherweise. Mit updateAfterEvent kann man das vermeiden. Dann kommt es allerdings zu dem Effekt, dass der Screen pro Frame mindestens einmal mehr upgedatet wird, als nötig.

Fehlt noch was?

4. (Janoscharlipp) Mit Intervallen kann man Funktionen in längeren Abständen unkompliziert aufrufen. Die Länge des Intervals ist nicht von der Framerate abhängig. Aber Vorsicht wg. 2: Wenn ein langes Interval genau während einer aufwendigen Aktion aufgerufen werden soll, kann es sein, dass es übersprungen wird.

5. (Bloba) Intervalle eignen sich hervorragend für interne Berechnungen die keine grafische Übersetzung haben. Für ein Interval braucht man keinen MovieClip, im Grunde noch nicht mal ein Objekt.

mfg. r

Geändert von bokel (20-03-2006 um 14:28 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 08-03-2006, 14:50   #11 (permalink)
_Thomas_
Gast
 
Beiträge: n/a
Ein Intervall gehört (für mich unbegreiflicherweise) zur Klasse Number, ein onEnterFrame zur Klasse Function.

Keine Ahnung, ob das im praktischen Einsatz noch was im Schlepptau hat..Aber um das zu klären ist ja bokel jetzt hier

Gruß,
Thomas.
  Mit Zitat antworten
Alt 08-03-2006, 17:56   #12 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Ich will Intervalle nicht verteufeln, sie machen aber in meinen Augen aber nur Sinn, wenn man etwas selten tun möchte (also die Framerate viel zu schnell wäre).

updateAfterEvent hatte redner[i] angesprochen.

also zu Bokels Liste hinzu:
4. Mit Intervallen kann man Funktionen in längeren Abständen unkompliziert aufrufen.

Zitat:
Zitat von _Thomas_
Ein Intervall gehört (für mich unbegreiflicherweise) zur Klasse Number, ein onEnterFrame zur Klasse Function.
Naja, das Interval ist im Grunde genommen auch nur eine Funktion, die irgendwo intern registriert wird. Der (abstrakte) Zugang dazu wird dir nur eben über eine ID statt einer Referenz gewährt.

Was die Performance angeht, ist man weder mit Intervallen, noch mit onEnterFrame unabhängig, wenn die CPU zu langsam ist, ruckelt es eben.

Wenn man seine Animation von der wirklich vergangenen Zeit abhängig haben möchte, kann man sie einfach mit getTimer ermitteln, dann stimmt die Zeit auch noch nach vielen Durchläufen (Intervalle und onEnterFrames werden relativ zum Startzeitpunkt immer ungenauer).
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 20-03-2006, 13:14   #13 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
vielleicht noch 5. Intervalle eignen sich hervorragend für interne berechnungen die keine grafische übersetzung haben

zb für pause funktionen oder hochzähl funktionen zumal sie auf keinen referenz-movieclip brauchen
__________________
gruß bloba

2 x onkel² b_d

Geändert von bloba (20-03-2006 um 13:15 Uhr)
bloba ist offline   Mit Zitat antworten
Alt 20-03-2006, 14:29   #14 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja danke Bloba, ich habe das oben ergänzt.
mfg. r
bokel ist offline   Mit Zitat antworten
Alt 20-03-2006, 14:32   #15 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
__________________
gruß bloba

2 x onkel² b_d
bloba 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:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele