| |||||||
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: Sep 2009
Beiträge: 253
|
Hi Leute, hab mal eine Frage bzw Problem wie kann ich meinem AIR App sagen, dass es nicht einfriert wenn ich zB größerer Schleifen durchlaufe? Gibts da ein Event was ich werfen kann wie zB "prevent Form Freeze". Danke euch. |
| | |
| | #4 (permalink) | |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
![]() 18000 Ordner zu durchsuchen, dauert nunmal seine Zeit! und wenn du Flash sagst, dass er das in einer Schleife auf einmal abarbeiten soll, wird er das auch tun, und es interessiert Flash dabei nicht, ob es währenddessen mit solchen Nebensächlichkeiten wie Benutzereingaben, oder Refresh-Zyklen des OS behelligt wird. in anderen Sprachen wird sowas über Threading gelöst, da kann der eine Thread schonmal was länger ackern, das hält die anderen Threads aber nicht dabei auf, weiterzuarbeiten. nur Flash kann kein threading, also musst du das anders lösen. anderes Thema, selbes Problem: SWF friert ein bei bitmap encoding - Flashforum Vorschlag: erstell eine lange todo-liste und lass Flash immer ~100 Ordner abarbeiten, dann bspw ein Timeout von 10ms. wenn die Liste durch ist, feuert dein Code ein Event und du machst weiter, mit dem, was du vorhattest (hat ja sicher einen Grund, diese Ordner auszulesen) Geändert von thomas_E (07-10-2011 um 12:56 Uhr) | |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Sep 2009
Beiträge: 253
| Zitat:
Ja sorry..war auch eine dumme Antwort von mir.. Ick kenne das halt aus anderen Sprachen, dass man in der Schleife eine Meldung an die App schickt damit diese nicht einfriert... Aber die Lösung von thomas ist tres bien! Ich mach jetzt alles in einem Timer mit 10 MS und es geht wunderbar! | |
| | |
| | #8 (permalink) | |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| mein Fazit||Erkenntnisse beim basteln der og Lösung
Threading funktioniert im Grunde genauso, da wird jedem Thread eine gewisse Laufzeit auf der CPU eingeräumt, dann wird sich um den nächsten Thread gekümmert; wenn die Liste durch ist, gehts wieder von vorne los. weiss grad nicht mehr von welcher Instanz das gesteuert wird; vermutlich irgendwo low-level OS!? hier musst du Flash auch die Möglichkeit geben irgendwas anderes zu machen, bevor es sich wieder um deine Aufgabe kümmert, sonst friert es ein. in dem o.g. Link hab ich das im Code mit setTimeout implementiert. ich hatte auch versucht, es so zu bauen: PHP-Code: eine weitere Möglichkeit wäre das ganze über ENTER_FRAME aufzurufen. Wenn pro frame zu viel zu erledigen ist sinkt die FrameRate halt, aber die Anwendung friert nicht ein. was ich noch nicht probiert habe, weil es vom Gefühl her eher nicht funktioniert wären setInterval oder ein durchlaufender Timer. Ich fürchte die halten sich so sehr an ihr timing, dass in den Pausen nicht genug Zeit bleibt, dass die Anwendung flüssig weiterläuft. (müsste ich bei Gelegenheit mal genauer testen) setTimeout wird hier ja erst nach dem Abarbeiten der Portion ausgeführt, somit ist da tatsächlich eine Pause von 10 ms in denen etwas anderes ausgeführt wird(oder auch nicht) bei einem interval wären die 10ms die Zeit von start zu start, einschliesslich der Zeit die benötigt wird, um diese Portion abzuarbeiten. Zitat:
ergänzung: bei allen Lösungen gilt: die Portionen / Zyklus müssen klein genug bleiben, dass sie in < 40 ms abgearbeitet werden können (entspricht 25fps), sonst wird auch hier die Anwendung nicht nur langsamer, sondern friert trotzdem ein. wenn die Portion jedoch zu klein gehalten wird, dauert der Vorgang ewig, was auch nicht Sinn sein kann. Geändert von thomas_E (07-10-2011 um 13:55 Uhr) | |
| | |
| | #10 (permalink) | |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
|
wie gesagt, war "nur" gefühlt, hatte keine Benchmarks dazu gemacht. noch was: Zitat:
vielleicht hatte es damit was zu tun, vielleicht damit, dass der Timer immer gestartet und beendet werden muss, oder dem Event-System dass dazwischen liegt, ka. vielleicht war es auch nur subjektive Wahrnehmung. | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Preloader daran hindern, den vorausgeladenen Film zu starten. | Seebold | ActionScript 2 | 1 | 26-04-2009 09:08 |
| wie kann ich flash hindern eine 0 wezulassen | weberm | ActionScript 1 | 1 | 21-10-2002 17:00 |
| Animation einfrieren | Tweenmaster | Flash 4 und Flash 5 | 1 | 09-12-2001 07:53 |
| Ext. Swf. einfrieren/stoppen | pedroni | Flash 4 und Flash 5 | 2 | 13-09-2001 00:15 |
| MC's Einfrieren | joschua | Flash 4 und Flash 5 | 4 | 09-09-2001 22:58 |