performance problem Drawing API [Flash 10]
| 30.12.2009, 19:23 | | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
| performance problem Drawing API hallo leute
wie kann ich die perfomance verbessern???
ich male ein paar partile like folgeden code
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | var color:Number = 0x0000FF;
particles = new Array();
for (var j:int = 0; j < 600; j++)
{
//color += 0x333333;
var particle:Sprite = new Sprite();
particle.graphics.lineStyle(0.5, 0x000066);
//color += 0x33FF33;
particle.graphics.beginFill(color, 0.75);
particle.graphics.drawCircle( 10 ,10, Math.random()*0.5);
particle.graphics.endFill();
/* particle.x += 50;
particle.y += 50; */
particle.x = Math.random() * UIcompnent.width;
particle.y = Math.random() * UIcompnent.height;
/* var blur:BlurFilter = new BlurFilter(5,5,3);
var filters:Array = new Array();
filters.push(blur);
particle.filters = filters; */
//UIcompnent.addChild(particle);
particles.push(particle);
container.addChild(particle);
container.x = Math.random();
container.y = Math.random();
container.width = 0;
container.height = 0;
}//end for-schleife
|
meine cpu geht mir da ein bisschen zu hoch ... hab gehört das durch bitmap umwandlung die performance rutner geht...
hat jemand von euch tipps für mich wie ich meine performance verbesseren kann???
bin um jeden rat froh:)
mfgDie Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 19:36 | Re1 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Für was soll das gut sein?
ActionScript:1 2 3 4 | container.x = Math.random();
container.y = Math.random();
container.width = 0;
container.height = 0;
|
| |
| 30.12.2009, 19:40 | Re2 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| is fürn nen Tween;)
hab den teil nicht gepostet, das Math.random damit die particles irgendow auftauchen;)
bl0ß wie schaffe ich es das es mir die cpu nicht zerreisst muss noch mehr "malen"
mit cacheAsBitmap bloß wie stelle ich das an
container.caseAsBitmap ???
mfgDie Lösung ist: das Suchen.
LongCrew = 2 people | |
| | | nicht sichtbar bei eingeloggten Mitgliedern |
|
| 30.12.2009, 19:47 | Re3 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Macht für mich dennoch keinen Sinn. Ob mit oder ohne Tween. Math.random() erzeugt eine Zahl zwischen 0 und 1. Du bewegst also den Container zwischen den Werten.
Und Breite und Höhe auf 0 und das in jedem Schleifendurchlauf entzieht sich auch meinem Verständnis.
hab den teil nicht gepostet,
Heisst das, in der Schleife steht noch mehr und du hast es nicht gepostet weil...?
Die Schleife, so wie sie ist, läuft bei mir schnell durch ohne das die CPU was davon bemerkt. | |
| 30.12.2009, 19:56 | Re4 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| ja das
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
var blur:BlurFilter = new BlurFilter(5,5,3);
var shadowFilt:DropShadowFilter = new DropShadowFilter(10,45,0x999999,1.0, 5,5);
var filters:Array = new Array();
filters.push(blur);
filters.push(shadowFilt);
container.filters = filters;
kugel.filters = filters;
UIcompnent.addChild(container);
var endTween:Function = function():void{
container.filters = null;
trace("hi");
}
Tweener.addTween(container, {height:Math.random()*400, width:400, time:2, transition:"easeInSine", onComplete:endTween});
|
wann wende ich denn eigtl CachAsBitmap an das soll doch eigtl die performance verbesser... hab gelesen das es bei filtern angwendet wird.
es fkt so das mein bild was nicht geändert wird nicht nochmal gezeichnet wird sonden zwgespeichert oder?
mfgDie Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 20:02 | Re5 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Das steht mit in der Schleife?
Du erstellst 600 mal dieses ganze Filter-Gedöns und rufst 600 mal Tweener.addTween auf?
Wozu?
So wie ich das sehe, geht es doch in der Schleife nur um das erstellen der Partikel. Alles andere gehört da nicht rein.
cacheAsBitmap ist in erster Linie dazu gedacht, komplexe Vektorgrafiken als Bitmap-Abbild in den Arbeitsspeicher zu legen um die Performance zu verbessern.
Es ist kein Allheilmittel, welches man immer anwenden kann. | |
| | | nicht sichtbar bei eingeloggten Mitgliedern | 
|
| 30.12.2009, 20:11 | Re6 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| ne das steht außerhalb der schleife also so:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | particles = new Array();
for (var j:int = 0; j < 600; j++)
{
//....
}
var blur:BlurFilter = new BlurFilter(5,5,3);
var shadowFilt:DropShadowFilter = new DropShadowFilter(10,45,0x999999,1.0, 5,5);
var filters:Array = new Array();
filters.push(blur);
filters.push(shadowFilt);
container.filters = filters;
kugel.filters = filters;
UIcompnent.addChild(container);
var endTween:Function = function():void{
container.filters = null;
trace("hi");
}
Tweener.addTween(container, {height:Math.random()*400, width:400, time:2, transition:"easeInSine", onComplete:endTween});
|
ist das immer noch falsch?
wie würde ich das richtig bwz performance freundlicher machen?
mfgDie Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 20:26 | Re7 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Dann sollte doch eigentlich alles gut laufen.
An welcher Stelle bricht denn die Performance zusammen? | |
| 30.12.2009, 20:48 | Re8 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| na ja es ist so das wenn er es lädt ich auf über 50% CPU auslastung komme
über einen btn rufe ich die schleife incl filter öfter auf und dann zeichnet er alles neu bzw fügt particl hinzu weil ich ja nichts cleane...
und da ist jedesmal so dass für kurze zeit die CPU so hoch wird jedenfalls muss ich noch mehr "malen" zur gleichen zeit und mach mir sorgen was dann passiert....
also würde ich lieber jetzt schon performance-auslastung-verringern...Die Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 20:53 | Re9 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Wenn das nur ab und zu passiert (bei einem Buttonklick), spielt es keine größere Rolle würde ich sagen.
über einen btn rufe ich die schleife incl filter öfter auf und dann zeichnet er alles neu bzw fügt particl hinzu weil ich ja nichts cleane...
Da hast du ja schon eine Antwort auf das Problem. Du erstellst alles nochmal obwohl das sicherlich nicht notwendig ist. | |
| 30.12.2009, 21:01 | Re10 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| konnte ich das schon erstelle irgendwie mit CacheAsBitmap zwspeichern???
is halt so wenn die fkt wieder aufgerufen wird durch btn-click dann erscheinen mehr particl wie kann ich die schon gezeichneten speichern um diese nicht nochmal zeichnen zu müssen?
das mit dem btn is nur zwlösung es sollte später automatisch fkt
mfgDie Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 21:30 | Re11 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Die gezeichneten hast du doch bereits gespeichert oder für was ist das Array particles da?
cacheAsBitmap würde ich an dieser Stelle erstmal vernachlässigen. Habe das Gefühl, du versteifst dich da zu sehr auf diese Eigenschaft.
Passiert da noch was mit den Partikeln oder bleiben die einfach an der Stelle wo sie erstellt wurden? | |
| 30.12.2009, 23:25 | Re12 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| naja eigtl nicht mehr viel sie bleiben da stehen ;)Die Lösung ist: das Suchen.
LongCrew = 2 people | |
| 30.12.2009, 23:53 | Re13 | Beiträge: 5285 Wohnort: Bernau (bei
Berlin) Registriert: Nov 2002
| Dann würde es doch reichen, wenn du alles in nur einem Shape (Shape anstelle von Sprite, bringt etwas mehr Leistung) zeichnest.
So in etwa:
ActionScript:1 2 3 4 5 6 7 8 9 10 | var particle:Shape = new Shape();
particle.graphics.lineStyle(0.5, 0x000066);
var g:Graphics = particle.graphics;
g.beginFill(color, 0.75);
for (var j:int = 0; j < 600; j++)
{
g.drawCircle(Math.random()*width , Math.random()*height, Math.random()*0.5);
}
g.endFill();
container.addChild(particle);
|
Das geht jedenfalls superschnell. | |
| 31.12.2009, 08:22 | Re14 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| ah danke;)
aber es ist dann schon sinnvoll (für spätere weiterverarbeit. mit tweens usw) die particls in nen mc zu legen? oder gibt noch was besseres?Die Lösung ist: das Suchen.
LongCrew = 2 people | |
| 31.12.2009, 08:28 | Re15 | Beiträge: 380 Wohnort: München, Berlin Registriert: Apr 2009
Themenautor/in
| hätte noch ne frage wie kann ich es anstellen das mein blurFilter mit der zeit t von z.B. 3 sek abnimmt also alles wieder langsam scharf wird?Die Lösung ist: das Suchen.
LongCrew = 2 people | |
| | Themen Ähnliche Beiträge zum Thema | 20.10.2010 - tomfpunkt 15.08.2011 - SNUFFSEED 29.10.2011 - drpelz 25.03.2011 - Kuestenkind75 |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|