| |||||||
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 2007
Beiträge: 59
|
Hi Folks, ich habe ein simples Snow-Script geschrieben, jede ms fällt eine Flocke Schnee vom Himmel. Auf der Stage gibt es eine "Hütte" und der Schnee bleibt auf dem Dach liegen. Vom Ablauf läuft das bei mir (wie in den meisten anderen Snow-Skripten auch): - jede Flocke hat ein Event.ENTER_FRAME und lässt die Flocke fallen bis sie entweder außerhalb der Bühne ist oder mit dem Dach in Berührung kommt Code: dach.hitTestPoint(flockeX,flockY,true); Code: dach.addChild(flocke); - das klappt alles wie gewünscht - Umso länger das Skript läuft, umso mehr Schnee/Child-Elemente enthält das Dach und irgendwann wird das ganze ziemlich langsam - Aus Performancegründen würde ich daher gern einen Cache einbauen - Something like: Immer wenn "dach" 100 Kinder hat, speichere den Inhalt als Bitmap, entferne alle Kinder und zeige nur das Bitmap Mein Ansatz ging bisher in diese Richtung (doch das funktioniert leider nicht ;-) Code: if(dach.numChildren%100==0){
dach.cacheAsBitmap = true;
var bitmapData:BitmapData = dach.bitmapData;
trace(bitmapData); //null
} |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Apr 2002
Beiträge: 496
|
du musst dir den MovieClip in ein Bitmap zeichen einfach: bmd.draw(mc); aber zur Performance: löscht du auch alle ENTERFRAME der "fertigen" flocken und löscht du auch die Objekte außerhalb des screens?
__________________ Grafik - Webdesign - Programmierung - www.thsc.at Adventkalender 2011 advent.wien.info/de Jobspace - Universum der Lehrstellen www.jobspace.at Geändert von padavan (29-11-2011 um 15:14 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jan 2007
Beiträge: 59
|
Hi padavan, das probiere ich gleich aus. Der ENTER_FRAME und das Child wird bisher so entfernt: Code: if (flake.x>stage.stageWidth || flake.x<0 || flake.y>stage.stageHeight) {
flake.removeEventListener(Event.ENTER_FRAME,moveMe);
removeChild(flake);
} |
| | |
| | #4 (permalink) | ||
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| so, das ist der erste Performance-Killer. mach einen einzigen ENTER_FRAME-loop, pack alle MCs in ein Array, und arbeite alle Flocken in einer Schleife ab. Zitat:
Zitat:
füg sie garnicht, zum dach hinzu, sondern zeichne sie direkt in das BD was ist dach denn eigentlich? ein Sprite oder ein Bitmap? Bitmaps haben keine Kindelemente, Sprites keine eigenschaft bitmapData, also was ist es denn nu? | ||
| | |
| | #5 (permalink) |
| Koda ;) Registriert seit: Oct 2010 Ort: Hannover
Beiträge: 213
|
hittestpoint ist in der regel auch nicht die allerschnellste variante, da sie sehr genau arbeitet. wenn es dir von der genauigkeit her reicht, koenntest du eine eigene abfrage erstellen, die jeweils nur die aeusseren ecken der flocke prueft.
__________________ 3D Browsergame under development |DevBlog|Powerful 3D Engine for Flash|Private Blog|Twitter |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| bitmap, cache |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Fullsize Video Performance Optimierung | flash-rockt | ActionScript 3 | 13 | 16-07-2011 11:25 |
| Flex Website - Performance Optimierung | flash-rockt | Flex allgemein | 5 | 26-11-2010 05:08 |
| Performance-Optimierung | bamboocha | Softwarearchitektur und Entwurfsmuster | 25 | 20-01-2008 16:47 |
| performance optimierung | triger23 | Spielkonzepte und Spieleprogrammierung | 3 | 09-08-2007 16:19 |
| script optimierung | totty38 | ActionScript 1 | 2 | 22-10-2004 10:34 |