| |||||||
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: Nov 2005
Beiträge: 154
| newbie probs mit setIntervall
Hi Leute, bin neu hier im Forum und auch mit flash. ...seit 2 Wochen fleißig am Tutorials reinziehen. Hab folgendes Prob. Will nen Fahrstuhl mit AS basteln. Und habe in Tuts das mit dem Intervall gelernt. Demnach auch direkt angewendet. Allerdings ist die Darstellung (AS-generierte Animation) bei jedem Durchlauf unterschiedlich. Das war nicht meine Erwartung davon: http://www.ankesundermeier.de/flashtest/forum.html Code: this.attachMovie("spalt", "spaltm", 1);
this.attachMovie("elevator_rechts_hinten", "ele_rh", 2);
this.attachMovie("elevator_rechts_hinten", "ele_lh", 3);
this.attachMovie("elevator_rechts_vorne", "ele_lv", 4);
this.attachMovie("elevator_rechts_vorne", "ele_rv", 5);
this.attachMovie("rahmen", "raam", 6);
raam._height = 450
raam._x = 350
raam._y = 226
ele_lv._rotation = 180
ele_lh._width = 0
ele_lv._width = 0
ele_rh._width = 0
ele_rv._width = 0
ele_lv._x= 200
ele_lv._y= 451
ele_lh._rotation = ele_lv._rotation
ele_lh._x= 200
ele_lh._y= ele_lv._y
ele_rh._x= 693
ele_rv._x= ele_rh._x
spaltm._x= 450
var nIntervallH:Number = setInterval(bewHinten,10);
var nIntervallV:Number = setInterval(bewVorne,-15);
function bewVorne():Void {
if (ele_lv._x > spaltm._x - 13) {
return
}
ele_rv._x = ele_rv._x -2;
ele_rv._width++;
ele_lv._x = ele_lv._x + 2;
ele_lv._width++;
updateAfterEvent();
}
function bewHinten():Void {
if (ele_rv._x < spaltm._x + 13) {
return
}
ele_rh._x--;
ele_rh._width++;
ele_lh._width++;
ele_lh._x++;
updateAfterEvent();
} Bin schon ein wenig stolz auf das, was ich da hingebogen habe. Wie gesagt, fange gerade erst an mit flash. Leider läuft es halt nicht gleichmäßig. Unterschiedlich schnell, weit (bis stop) und ruckelig. Gibt es eine elegantere Lösung in AS ? Danke im vorraus, Fab4ce |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 154
| Nachtrag
Falls ihr nicht sehen könnt was mein Prob ist, hier nochmal eine genauere Beschreibung: 1. Klammer ich eine Zeile mit setIntervall aus, läuft es viel besser (schneller) 2. lass ich die zwei Zeilen mit ._rotation weg, läuft es auch etwas besser (schneller) 3. lade ich allerdings nen Hintergrund rein, wird es arschlahm. Mein Prob ist einfach, dass ich es nicht vernünftig kontrollieren kann. Das muss doch anders möglich sein, oder ? Fab4ce |
| | |
| | #3 (permalink) |
| ▼ Registriert seit: May 2004
Beiträge: 327
|
meine Kenntnisse beschränken sich auf AS1... allgemein: Flash hat keine stabile Laufzeit. Mit setInterval wird es noch ein wenig 'schwammiger - ok ich übertreib ein wenig. Auch wenn man das Interval in Millisekunden angibt, treten dennoch Abweichungen, je nach Inhalt der Funktion, um die 3ms auf. zu deinem script: 1. negativer Wert bei Zeit im Interval? 2. Warum zwei intervalle laufen lassen, wenns mit einem geht? 3. return: was soll denn da zurückgegeben werden? 4. updateAfterEvent() was soll denn das? ...das waren so die Dinge, die mir ein wenig komisch vorkamen. |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 154
| re:
Hi AAI, erstmal vielen Dank für deine Antwort. Immer beruhigend, wenn jemand antwortet. zu1: ja ich weiß,.....entstand beim rumprobieren, bei der erwähnten verlorenen Kontrolle. zu2: hast Recht, hab´s schon geändert. Danke für Hinweis. zu3: wüßte gerne, wie es richtig geht. Wollte die funktion (den loop) nur irgendwie beenden. Wie macht man es denn vernünftig ? zu4: das macht es flüssiger. Hab ich nem Tutorial entnommen, und es funzt. Grüße, Fab4ce |
| | |
| | #6 (permalink) |
| . Registriert seit: May 2003 Ort: bayern
Beiträge: 1.117
|
var nIntervallH:Number = setInterval(bewHinten,10); var nIntervallV:Number = setInterval(bewVorne,-15); der zweite paramater steht für die zeit im millisekunden in der die funktion aufgerufen wird, was passiert denn da wenn du -15 eingibst? auch zehn scheint mir sehr niedrig, das besagt jede sekunde wird die funktion bewHinten 100 x aufgerufen.
__________________ [mooseMash] |
| | |
| | #7 (permalink) |
| ▼ Registriert seit: May 2004
Beiträge: 327
| Beispiel
Hab auch mal n bissl rumprobiert... Code: int1 = setInterval(pause,1000)
function close_door () {
ele.door_vl._x+=0.6
ele.door_vr._x-=0.6
ele.door_hl._x+=0.3
ele.door_hr._x-=0.3
i--
if(i<0) {
clearInterval(int1)
open = 0
int1 = setInterval(pause,1000)
}
}
function open_door () {
ele.door_vl._x-=0.6
ele.door_vr._x+=0.6
ele.door_hl._x-=0.3
ele.door_hr._x+=0.3
i--
if(i<0) {
clearInterval(int1)
open = 1
int1 = setInterval(pause,1000)
}
}
function pause () {
clearInterval(int1)
i=110
if(open == 0) {
int1 = setInterval(open_door,31)
}else{
int1 = setInterval(close_door,8)
}
} läufts erst mal. Nicht vergessen: Framerate auf 120 setzen noch was: so wenig Fläche wie möglich/soviel wie nötig bewegen. Geändert von AAI (15-11-2005 um 20:39 Uhr) |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 154
|
mooseMash: negative Werte scheinen auch zu funktionieren. Die niedrigen Werte sind mir auch suspekt. Aber ich wollte es halt schneller machen, deswegen hab ich rumprobiert. Irgendwas stimmt da noch nicht, meiner Meinung nach. Aber mit nur noch einem Intervallaufruf läuft es jetzt schon mal deutlich besser. rendner[i]: danke. Habs eingebaut. Allerdings will ich das jetzt per Knopf starten. Den setInterval in eine inline-function per onRelease-Aufruf zu packen, klappt verständlicherweise nicht. Wie macht man das ? AAI: Danke, werde es mir gleich mal reinziehen. Muss eben was kochen. Hut ab für dein Engagement. Bis später. Fab4ce |
| | |
| | #9 (permalink) |
| ▼ Registriert seit: May 2004
Beiträge: 327
| negative Werte
negative Werte bei der Zeitangabe bei setInterval sind Unsinn! Der negative Wert wird von Flash so nicht angenommen und es macht wohl den kleinstmöglichen positiven Wert daraus (1?). Dadurch, dass du updateAfterEvent(); in die function einbaust, wird das Interval mit der eingestellten Framerate syncronisiert! Was passiert, wenn du -15 eingibst? Also ich glaube, der Wert wird intern auf 1 gesetzt - updateAfterEvent(); setzt diesen Wert wiederum sync zu Framerate (beispielsweise: 24) - das entspricht dann ungefähr: setInterval(function,42) 1000/24 ---> ca.42 updateAfterEvent(); beenflusst die Geschwindigkeit der Animation. Geändert von AAI (16-11-2005 um 13:24 Uhr) |
| | |
| | #10 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
updateAfterEvent ist doch meines wissens gar nicht synchron mit der Framerate, sonst wär es auch überflüssig. So könnte man zB ein Intervall per Button starten... PHP-Code: |
| | |
| | #11 (permalink) | |
| ▼ Registriert seit: May 2004
Beiträge: 327
| Zitat:
gestern bewusst wahrgenommen. Mein Eindruck ist es, dass die function, die diesen Befehl enthält, und im Interval ausgeführt wird, dann am 'Framerate-Raster' ausgerichtet wird, also dann ausgefürt wird, wenn ein ganzes Frame erreicht ist. setInterval(xxx,8) + updateAfterEvent() ist demnach nur dann sinnvoll, wenn die Framerate bei ca.120 liegt. 1000/120 = 8.333ms ---> Framrate-Raster. Es entsteht ein: setInterval(xxx,8.333) setInterval(xxx,8) + updateAfterEvent() bei einer Framerate von 24 entspricht setInterval(xxx,41.666). Bei diesem Beispiel müssten sich erhebliche Geschwindigkeitsunterschiede feststellen lassen, je nachdem ob man mit oder ohne updateAfterEvent() arbeitet. | |
| | |
| | #12 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Hier mal ein Beispiel wo man das sehen kann. Erstelle mal eine neue Datei und stelle mal die Framerate auf 5 BpS. Dann einfach den Script ins erste Frame und los gehts, um den unterschied zu sehen einfach mal des "updateAfterEvent" auskommentieren. PHP-Code: |
| | |
| | #13 (permalink) |
| ▼ Registriert seit: May 2004
Beiträge: 327
| Einsicht
rendner[i], du hast recht. Mein letzter Beitrag zeugt von meinem mangeldem Verständniss - alles Unsinn. Noch n bissl probiert... updateAfterEvent() setzt sich über die voreingestellte Framerate hinweg. Sehr interessant! - ja, ich muss zugeben: ich bin sehr angetan von dieser Funktion |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |